1. 程式人生 > >WKWebView載入進度條(仿微信)

WKWebView載入進度條(仿微信)

WKWebView添加了estimatedProgress屬性(double型別),我們可以利用該屬性來設定UIProgressView

  • 為頁面新增UIProgressView屬性
@property (nonatomic, strong) WKWebView *mywebView;
@property (nonatomic, strong) UIProgressView *progressView;//設定載入進度條
  • 懶載入UIProgressView
-(UIProgressView *)progressView{
    if (!_progressView) {
        _progressView                   = [[UIProgressView alloc]
                                           initWithProgressViewStyle:UIProgressViewStyleDefault];
        _progressView.frame             = CGRectMake(0, 64, screen_width, 5);

        [_progressView setTrackTintColor:[UIColor colorWithRed:240.0/255
                                                         green:240.0/255
                                                          blue:240.0/255
                                                         alpha:1.0]]
; _progressView.progressTintColor = [UIColor greenColor]; } return _progressView; }
  • 在初始化WKWebView時(我是在懶載入時) kvo 新增監控
 [_mywebView addObserver:self
                     forKeyPath:NSStringFromSelector(@selector(estimatedProgress))
                        options:0
                        context:
nil];
  • 頁面開始載入時,隱藏進度條
//開始載入
-(void)webView:(WKWebView *)webView
  didStartProvisionalNavigation:(WKNavigation *)navigation{
    //開始載入的時候,讓進度條顯示
    self.progressView.hidden = NO;
}
  • kvo 監聽進度
//kvo 監聽進度
-(void)observeValueForKeyPath:(NSString *)keyPath
                     ofObject:(id)object
                       change:(NSDictionary
<NSKeyValueChangeKey,id> *)change context:(void *)context{ if ([keyPath isEqualToString:NSStringFromSelector(@selector(estimatedProgress))] && object == self.mywebView) { [self.progressView setAlpha:1.0f]; BOOL animated = self.mywebView.estimatedProgress > self.progressView.progress; [self.progressView setProgress:self.mywebView.estimatedProgress animated:animated]; if (self.mywebView.estimatedProgress >= 1.0f) { [UIView animateWithDuration:0.3f delay:0.3f options:UIViewAnimationOptionCurveEaseOut animations:^{ [self.progressView setAlpha:0.0f]; } completion:^(BOOL finished) { [self.progressView setProgress:0.0f animated:NO]; }]; } }else{ [super observeValueForKeyPath:keyPath ofObject:object change:change context:context]; } }
  • 在dealloc方法裡移除監聽
-(void)dealloc{
    [self.mywebView removeObserver:self
                        forKeyPath:NSStringFromSelector(@selector(estimatedProgress))];
}

相關推薦

WKWebView載入進度仿

WKWebView添加了estimatedProgress屬性(double型別),我們可以利用該屬性來設定UIProgressView 為頁面新增UIProgressView屬性 @pro

Android 使用RecyclerView實現仿的聯絡人A-Z字母排序和過濾搜尋功能

之前做專案的時候遇到一個需求是實現品牌的字母排序功能,網上的資料很多,但是有一部分有bug,這篇文章是我學習和解決部分bug之後的總結。今天帶來的是RecyclerView的A-Z字母排序和過濾搜尋功能。 首先上效果圖: 重點:1、實現資料排序分類 2、

Android 實現自定義安全數字鍵盤仿

背景 大部分的金融App會對預設的數字鍵盤進行處理,以實現自定義的數字安全鍵盤。基於此,本文對對微信數字鍵盤樣式進行了仿寫,實現了一套自定義的數字安全鍵盤(支援隨機數字分佈)。 一.圖示效果 二.需要考慮的問題 佈局的實現方式; demo中使用了popupw

開發仿Android日程總結

最後一次記錄了,通訊基本實現,朋友圈粗略實現,新增好友實現。 其中一部分發朋友圈新增好友在我的GitHub上,另一部分是組員用eclipse寫的。gong共用一個數據庫,可是開發出兩個軟體,無法整合(

iOS開發-自定義相機仿拍照、視訊錄製

網上有很多自定義相機的例子,這裡只是我臨時寫的一個小demo,僅供參考: 用到了下面幾個庫: #import <AVFoundation/AVFoundation.h> #import <AssetsLibrary/AssetsLibra

Android二維碼仿,輕量Zxing

前言 要做一個功能,二維碼識別。網上找一堆相關的Demo,但是總不是想要的效果,或者都是多年前的版本,權衡考慮之後,決定親自操刀。不糾結直接選中Zxing框架,https://github.com/zxing/zxing 在網站上直接clone下來,執行,然後

純css使用線性漸變實現滾動進度(來自於前端早讀課

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initi

多種方式實現底部選單欄仿介面

關於底部選單是什麼,我想沒必要介紹了,在市場上的APP裡太常見了,這裡提供兩種方式來實現。 記得之前寫過幾篇關於底部選單實現的方法,有興趣的朋友可以看看: 今天帶來種相對更通俗易懂的寫法,不再和過去一樣去沿用TabHost了,這次我們直接用LinearLayout佈

Android中多圖片選擇器ImagePicker庫的使用仿、非常容易整合

原文地址: https://github.com/jeasonlzy/ImagePickerImagePickerAndroid自定義相簿,完全仿微信UI,實現了拍照、圖片選擇(單選/多選)、 裁剪 、旋轉、等功能。由於個人時間有限,該專案停止維護如果你發現有bug,或者好的

同一個app不同activity顯示多工仿小程式切換效果

簡書地址:https://www.jianshu.com/p/a8f695841008 轉載請註明出處 如題,這種效果類似微信小程式顯示的效果,就是開啟微信跳一跳後,切換安卓多工視窗(就是清理記憶體視窗),會看到如下頁面 微信小程式會在其中顯示兩個單獨

Android實現二維碼掃描仿,輕量Zxing

前言 要做一個功能,二維碼識別。網上找一堆相關的Demo,但是總不是想要的效果,或者都是多年前的版本,權衡考慮之後,決定親自操刀。不糾結直接選中Zxing框架,https://github.com/zxing/zxing 在網站上直接clone下來,執行,然後就發現問題了.

多種風格的圖片載入進度Fresco、UIL、Glided多種風格載入

  好了,不說廢話 首先,你必須先建立一個CircleProgress或者RectanglePropress或者其他 CircleProgress progress = new CircleProgress.Builder().

Unity3D研究院之非同步載入遊戲場景與非同步載入遊戲資源進度三十一

          非同步任務相信大家應該不會陌生,那麼本章內容MOMO將帶領大家學習Unity中的一些非同步任務。在同步載入遊戲場景的時候通常會使用方法 Application.LoadLevel(“yourScene”);  這句程式碼執行完畢後程序會幹什麼呢??如下圖所示,這是我隨便找了一個遊戲場景

WKWebView載入進度

一、建立WKWebView和進度條 @property (nonatomic, strong) WKWebView *webView; @property (nonatomic, strong) UIProgressView *pro

安卓開發筆記——多種方式實現底部選單欄仿介面

關於底部選單是什麼,我想沒必要介紹了,在市場上的APP裡太常見了,這裡提供兩種方式來實現。 記得之前寫過幾篇關於底部選單實現的方法,有興趣的朋友可以看看: 今天帶來種相對更通俗易懂的寫法,不再和過去一樣去沿用TabHost了,這次我們直接用LinearLa

Android中多圖片選擇器PhotoPicker庫的使用仿,秒殺MultiImageSelector

@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); i

Android-SpinKit 載入進度登入,網路請求

Gradle 配置: allprojects { repositories { maven { url "https://jitpack.io" } } } compile 'com.github.ybq:Android-SpinKit

Android模仿iOS實現側滑返回類似

actionbar fin kth ins any lean blog 模仿 over 我們都知道側滑返回操作是 iOS 裏面比較常見的功能,一般是手指在靠近手機屏幕左邊緣向右滑動就可以關閉當前的界面,iOS 系統提供了這樣的 API,但是 Android 怎麽實現呢? 網

安卓下瀏覽器包括video 小窗口播放

瀏覽器 str asc col controls vid webkit idt con <video id="video" width="100%" autoplay="autoplay" playsinline x5-playsinline webkit-play

PCwindowsHOOK

ffffff pro follow hook type 分享圖片 分享 png images 微信PCHOOK。 demo源碼使用易語言進行開發,開發環境為易語言5.8 作者qq:286513187 github地址:https://github.com/changtuiq