iOS開發(fā)——WebView進度條

類似Safari的加載進度條只洒,除了比HUD更加簡潔七扰,也有更好的用戶體驗锉桑。HUD會讓用戶覺得等待的時間很長链韭,因為用戶注意力集中在一個沒有程度變化的東西上面偏竟。而進度條是有程度變化的,所以會讓用戶產生加載速度比HUD快的錯覺敞峭。(本人在公司內調查踊谋,的確如此)。所以現在就行動吧旋讹!

你可能已經注意到了殖蚕,是WebView進度條而不是UIWebView,沒錯這個實現真對的不是UIWebView而是WKWebView沉迹,什么你不知道WKWebView睦疫?趕緊谷歌或者必應一下吧,這個控件要比UIWebView性能強大并且功能豐富鞭呕,關于WKWebView的使用不屬于本篇介紹的范圍蛤育,感興趣的可以自行搜索,后續(xù)我也會寫相關的文章的葫松。

好瓦糕,廢話不多說,進入正題腋么。WKWebView有一個屬性estimatedProgress刻坊,就是當前網頁加載的進度,所以首先監(jiān)聽這個屬性党晋。

WKWebView *webView = [[WKWebView alloc]initWithFrame:[UIScreen mainScreen].bounds];
[webView addObserver:self forKeyPath:@"estimatedProgress" options:NSKeyValueObservingOptionNew context:nil];
self.webView = webView;

接下來谭胚,就是弄一個進度條啦徐块,在viewDidLoad方法里面寫:

    UIView *progress = [[UIView alloc]initWithFrame:CGRectMake(0, 64, CGRectGetWidth(self.view.frame), 3)];
    progress.backgroundColor = [UIColor clearColor];
    [self.view addSubview:progress];
    
    CALayer *layer = [CALayer layer];
    layer.frame = CGRectMake(0, 0, 0, 3);
    layer.backgroundColor = COLOR_BAR_TIN.CGColor;
    [progress.layer addSublayer:layer];
    self.progresslayer = layer;

為什么要用CALayer?隱式動畫啊灾而。然后就是監(jiān)聽方法啦

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context{
    if ([keyPath isEqualToString:@"estimatedProgress"]) {
        self.progresslayer.opacity = 1;
        //不要讓進度條倒著走...有時候goback會出現這種情況
        if ([change[@"new"] floatValue] < [change[@"old"] floatValue]) {
            return;
        }
        self.progresslayer.frame = CGRectMake(0, 0, self.view.bounds.size.width * [change[@"new"] floatValue], 3);
        if ([change[@"new"] floatValue] == 1) {
            dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(.4 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
                self.progresslayer.opacity = 0;
            });
            dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
                self.progresslayer.frame = CGRectMake(0, 0, 0, 3);
            });
        }
    }else{
        [super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
    }
}

拷貝到自己的項目里面就OK啦胡控,是不是很爽呢?最后別忘了取消監(jiān)聽...

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

拿過去給產品show旁趟,告訴他你各種深度優(yōu)化昼激,讓網頁加載提速了,他肯定會說锡搜,「牛逼橙困!」。

應大家要求耕餐,搞了個demo:
https://github.com/timehzy/WebViewWithProgressLine

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末凡傅,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子肠缔,更是在濱河造成了極大的恐慌夏跷,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件明未,死亡現場離奇詭異槽华,居然都是意外死亡,警方通過查閱死者的電腦和手機趟妥,發(fā)現死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門猫态,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人披摄,你說我怎么就攤上這事懂鸵。” “怎么了行疏?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵匆光,是天一觀的道長。 經常有香客問我酿联,道長终息,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任贞让,我火速辦了婚禮周崭,結果婚禮上,老公的妹妹穿的比我還像新娘喳张。我一直安慰自己续镇,他們只是感情好,可當我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布销部。 她就那樣靜靜地躺著摸航,像睡著了一般制跟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上酱虎,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天雨膨,我揣著相機與錄音,去河邊找鬼读串。 笑死聊记,一個胖子當著我的面吹牛,可吹牛的內容都是我干的恢暖。 我是一名探鬼主播排监,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼杰捂!你這毒婦竟也來了舆床?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤琼娘,失蹤者是張志新(化名)和其女友劉穎峭弟,沒想到半個月后附鸽,有當地人在樹林里發(fā)現了一具尸體脱拼,經...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年坷备,在試婚紗的時候發(fā)現自己被綠了熄浓。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡省撑,死狀恐怖赌蔑,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情竟秫,我是刑警寧澤娃惯,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站肥败,受9級特大地震影響趾浅,放射性物質發(fā)生泄漏。R本人自食惡果不足惜馒稍,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一皿哨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧纽谒,春花似錦证膨、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽不见。三九已至,卻和暖如春订歪,著一層夾襖步出監(jiān)牢的瞬間脖祈,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工刷晋, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留盖高,地道東北人。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓眼虱,卻偏偏與公主長得像喻奥,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子捏悬,可洞房花燭夜當晚...
    茶點故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內容

  • 發(fā)現 關注 消息 iOS 第三方庫撞蚕、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,102評論 4 62
  • Swift版本點擊這里歡迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh閱讀 25,374評論 7 249
  • 煲上山藥紅棗排骨湯刀疙,放進參和黃芪。剛剛自制完氣墊BBCC扫倡,還不錯嘛谦秧。寫這篇是為總結2015年(23歲的我)護膚小心...
    微安_閱讀 289評論 0 0
  • “他很簡單” “沒有了?” “很多人都不到這一點” 39.“不表白我們還是朋友澳炖!疚鲤!” “那表白呢?” “笨蛋缘挑,...
    sheepdie閱讀 167評論 0 0
  • 作者:夏汐蕊?想看其他作品請點擊這里 【第十四章節(jié)】矛盾開端 年輕氣盛的楊輝離開了拼搏了兩年的公司集歇,帶著自己積累的...
    夏汐蕊閱讀 465評論 0 1