iOS WKWebView 獲得title和加載進(jìn)度

1、前言

iOS8后塞耕,蘋果推出了新框架Webkit蚀腿,提供了替換UIWebView的組件WKWebView,相比于UIWebView,好處多多扫外,速度更快了莉钙,占用內(nèi)存少了。

2筛谚、基本使用

使用方法和UIWebView大同小異磁玉,具體使用可以參考使用WKWebView替換UIWebView,這篇文章講的挺詳細(xì)了,這不是我們本篇的重點(diǎn)驾讲,我們的重點(diǎn)是講下怎么頁(yè)面title和加載進(jìn)度值蚊伞。

3、獲得頁(yè)面title和加載進(jìn)度值(基于系統(tǒng)KVO)

//導(dǎo)入框架
#import <WebKit/WebKit.h>
/*********/
@property (nonatomic, strong) WKWebView *mWebView;//webView
@property (nonatomic, strong) UIProgressView *mProgressView;//進(jìn)度條
/*********/
- (void)viewDidLoad {
  [super viewDidLoad];
  [self initWebView];
}
  //增加kvo監(jiān)聽(tīng)吮铭,獲得頁(yè)面title和加載進(jìn)度值
- (void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    [self.mWebView addObserver:self forKeyPath:@"estimatedProgress" options:NSKeyValueObservingOptionNew context:NULL];
    [self.mWebView addObserver:self forKeyPath:@"title" options:NSKeyValueObservingOptionNew context:NULL];
}
//KVO 一定要移除时迫,要不然會(huì)崩潰
- (void)dealloc{
    [self.mWebView removeObserver:self forKeyPath:@"estimatedProgress"];
    [self.mWebView removeObserver:self forKeyPath:@"title"];
}

- (void)initWebView
{
    _mWebView = [[WKWebView alloc] initWithFrame:CGRectMake(0, 0, ScreenWidth, ScreenHeight - TopFullHeight)];
    [_mWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http:xxxxx"]]];
    [self.view addSubview:_mWebView];
    
    //進(jìn)度條添加到navigationBar
    CGFloat progressBarHeight = 2.0f;
    CGRect navigationBarBounds = self.navigationController.navigationBar.bounds;
    CGRect barFrame = CGRectMake(0, navigationBarBounds.size.height - progressBarHeight, navigationBarBounds.size.width, progressBarHeight);
    _mProgressView = [[UIProgressView alloc] initWithFrame:barFrame];
    _mProgressView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin;
    _mProgressView.progressTintColor = [UIColor greenColor];
    [self.navigationController.navigationBar addSubview:_mProgressView];
}

#pragma mark KVO的監(jiān)聽(tīng)代理
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {

    //加載進(jìn)度值
    if ([keyPath isEqualToString:@"estimatedProgress"]){
        if (object == self.mWebView){
            self.mProgressView.alpha = 1;
            [self.mProgressView setProgress:self.mWebView.estimatedProgress animated:YES];
            if(self.mWebView.estimatedProgress >= 1.0f)
            {
                [UIView animateWithDuration:0.5 animations:^{
                    self.mProgressView.alpha = 0;
                } completion:^(BOOL finished) {
                     [self.mProgressView setProgress:0.0f animated:NO];
                }];
            }
        }else{
            [super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
        }
    }else if ([keyPath isEqualToString:@"title"]){//網(wǎng)頁(yè)title
        if (object == self.mWebView){
            self.navigationItem.title = self.mWebView.title;
        }else{
            [super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
        }
    }else{
        [super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
    }
}

至此,加載標(biāo)題和進(jìn)度值完成谓晌,try掠拳。

4、基于 KVOController

KVOController是facebook開(kāi)源的一個(gè)KVO框架纸肉,使用方便溺欧,好處多多,我就是因?yàn)閭?cè)滑返回偶爾導(dǎo)致系統(tǒng)KVO沒(méi)有釋放毁靶,最后程序崩潰了胧奔,所以這里建議使用這個(gè)框架,使用代碼入下

#import "FBKVOController.h"
@property (nonatomic, strong) FBKVOController *kvoController;

- (void)initFBKVO{
    
    //KVO
    __weak typeof (self) weakSelf = self;
    self.kvoController = [FBKVOController controllerWithObserver:self];
    [self.kvoController observe:self.mWebView keyPath:@"estimatedProgress" options:NSKeyValueObservingOptionNew block:^(id  _Nullable observer, id  _Nonnull object, NSDictionary<NSString *,id> * _Nonnull change) {
        
        weakSelf.mProgressView.alpha = 1;
        [weakSelf.mProgressView setProgress:self.mWebView.estimatedProgress animated:YES];
        if(weakSelf.mWebView.estimatedProgress >= 1.0f)
        {
            [UIView animateWithDuration:0.5 animations:^{
                weakSelf.mProgressView.alpha = 0;
            } completion:^(BOOL finished) {
                [weakSelf.mProgressView setProgress:0.0f animated:NO];
            }];
        }  
    }];
    
    [self.kvoController observe:self.mWebView keyPath:@"title" options:NSKeyValueObservingOptionNew block:^(id  _Nullable observer, id  _Nonnull object, NSDictionary<NSString *,id> * _Nonnull change) {
         weakSelf.navigationItem.title = self.mWebView.title;
    }];
}

參考

http://www.reibang.com/p/6f2d733502c6
http://blog.csdn.net/reylen/article/details/46679895

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末预吆,一起剝皮案震驚了整個(gè)濱河市龙填,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖岩遗,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扇商,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡宿礁,警方通過(guò)查閱死者的電腦和手機(jī)案铺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)梆靖,“玉大人控汉,你說(shuō)我怎么就攤上這事》滴牵” “怎么了姑子?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)测僵。 經(jīng)常有香客問(wèn)我街佑,道長(zhǎng),這世上最難降的妖魔是什么捍靠? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任沐旨,我火速辦了婚禮,結(jié)果婚禮上榨婆,老公的妹妹穿的比我還像新娘磁携。我一直安慰自己,他們只是感情好纲辽,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布颜武。 她就那樣靜靜地躺著,像睡著了一般拖吼。 火紅的嫁衣襯著肌膚如雪鳞上。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,462評(píng)論 1 302
  • 那天吊档,我揣著相機(jī)與錄音篙议,去河邊找鬼。 笑死怠硼,一個(gè)胖子當(dāng)著我的面吹牛鬼贱,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播香璃,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼这难,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了葡秒?” 一聲冷哼從身側(cè)響起姻乓,我...
    開(kāi)封第一講書(shū)人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤嵌溢,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后蹋岩,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體赖草,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年剪个,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了秧骑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡扣囊,死狀恐怖乎折,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情侵歇,我是刑警寧澤笆檀,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站盒至,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏士修。R本人自食惡果不足惜枷遂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望棋嘲。 院中可真熱鬧酒唉,春花似錦、人聲如沸沸移。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)雹锣。三九已至网沾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蕊爵,已是汗流浹背辉哥。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留攒射,地道東北人醋旦。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像会放,于是被迫代替她去往敵國(guó)和親饲齐。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容