iOS WKWebView添加網(wǎng)頁加載進度條

一川抡、效果展示

WKWebProgressViewDemo.gif

二敌完、主要步驟

1.添加UIProgressView屬性

@property (nonatomic, strong) WKWebView *wkWebView;
@property (nonatomic, strong) UIProgressView *progressView;

2.初始化progressView

- (void)viewDidLoad {
    [super viewDidLoad];    
    //進度條初始化
    self.progressView = [[UIProgressView alloc] initWithFrame:CGRectMake(0, 20, [[UIScreen mainScreen] bounds].size.width, 2)];
    self.progressView.backgroundColor = [UIColor blueColor];
    //設置進度條的高度,下面這句代碼表示進度條的寬度變?yōu)樵瓉淼?倍揍诽,高度變?yōu)樵瓉淼?.5倍.
    self.progressView.transform = CGAffineTransformMakeScale(1.0f, 1.5f);
    [self.view addSubview:self.progressView];
}

3.添加KVO愉适,WKWebView有一個屬性estimatedProgress犯助,就是當前網(wǎng)頁加載的進度,所以監(jiān)聽這個屬性维咸。

[self.wkWebView addObserver:self forKeyPath:@"estimatedProgress" options:NSKeyValueObservingOptionNew context:nil];

4.在監(jiān)聽方法中獲取網(wǎng)頁加載的進度剂买,并將進度賦給progressView.progress

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context {
    if ([keyPath isEqualToString:@"estimatedProgress"]) {
        self.progressView.progress = self.wkWebView.estimatedProgress;
        if (self.progressView.progress == 1) {
            /*
             *添加一個簡單的動畫,將progressView的Height變?yōu)?.4倍癌蓖,在開始加載網(wǎng)頁的代理中會恢復為1.5倍
             *動畫時長0.25s瞬哼,延時0.3s后開始動畫
             *動畫結束后將progressView隱藏
             */
            __weak typeof (self)weakSelf = self;
            [UIView animateWithDuration:0.25f delay:0.3f options:UIViewAnimationOptionCurveEaseOut animations:^{
                weakSelf.progressView.transform = CGAffineTransformMakeScale(1.0f, 1.4f);
            } completion:^(BOOL finished) {
                weakSelf.progressView.hidden = YES;

            }];
        }    
    }else{
        [super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
    }
}

5.在WKWebViewd的代理中展示進度條,加載完成后隱藏進度條

//開始加載
- (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation {
    NSLog(@"開始加載網(wǎng)頁");
    //開始加載網(wǎng)頁時展示出progressView
    self.progressView.hidden = NO;
    //開始加載網(wǎng)頁的時候將progressView的Height恢復為1.5倍
    self.progressView.transform = CGAffineTransformMakeScale(1.0f, 1.5f);
    //防止progressView被網(wǎng)頁擋住
    [self.view bringSubviewToFront:self.progressView];
}

//加載完成
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation {
    NSLog(@"加載完成");
    //加載完成后隱藏progressView
    //self.progressView.hidden = YES;
}

//加載失敗
- (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *)navigation withError:(NSError *)error {
    NSLog(@"加載失敗");
    //加載失敗同樣需要隱藏progressView
    //self.progressView.hidden = YES;
}

6.在dealloc中取消監(jiān)聽

- (void)dealloc {
    [self.wkWebView removeObserver:self forKeyPath:@"estimatedProgress"];
}

三租副、github 代碼地址

請戳這里查看demo坐慰,如果覺得還不錯請隨手給個star。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末用僧,一起剝皮案震驚了整個濱河市结胀,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌责循,老刑警劉巖糟港,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異院仿,居然都是意外死亡秸抚,警方通過查閱死者的電腦和手機速和,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來耸别,“玉大人健芭,你說我怎么就攤上這事⌒憬悖” “怎么了?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵若贮,是天一觀的道長省有。 經(jīng)常有香客問我,道長谴麦,這世上最難降的妖魔是什么蠢沿? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮匾效,結果婚禮上舷蟀,老公的妹妹穿的比我還像新娘。我一直安慰自己面哼,他們只是感情好野宜,可當我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著魔策,像睡著了一般匈子。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上闯袒,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天虎敦,我揣著相機與錄音,去河邊找鬼政敢。 笑死其徙,一個胖子當著我的面吹牛,可吹牛的內容都是我干的喷户。 我是一名探鬼主播唾那,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼摩骨!你這毒婦竟也來了通贞?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤恼五,失蹤者是張志新(化名)和其女友劉穎昌罩,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體灾馒,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡茎用,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片轨功。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡旭斥,死狀恐怖,靈堂內的尸體忽然破棺而出古涧,到底是詐尸還是另有隱情垂券,我是刑警寧澤,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布羡滑,位于F島的核電站菇爪,受9級特大地震影響,放射性物質發(fā)生泄漏柒昏。R本人自食惡果不足惜凳宙,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望职祷。 院中可真熱鬧氏涩,春花似錦、人聲如沸有梆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽淳梦。三九已至析砸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間爆袍,已是汗流浹背首繁。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留陨囊,地道東北人弦疮。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像蜘醋,于是被迫代替她去往敵國和親胁塞。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內容