iOS webView以及WKWebView計算高度慢凤藏,加快加載速度等問題

我們開發(fā)詳情頁面,有的時候需要計算webView或者WKWebView的高度叠殷,然后再計算scrollView的高度罗侯,把webView放到scrollView上面。但是計算webView高度這個過程很耗費時間溪猿,原因是以下代理钩杰,網(wǎng)頁徹底加載完才會計算出來高度,我們需要的是先算出高度诊县,先出現(xiàn)網(wǎng)頁的文字讲弄,至于網(wǎng)頁的圖片,可以慢慢緩存顯示全依痊。這樣不至于白屏?xí)r間過長避除。

- (void)webView:(WKWebView *)webView didFinishNavigation:(null_unspecified WKNavigation *)navigation

{

? ? /**計算高度*/

? ? dispatch_async(dispatch_get_global_queue(0,0), ^{

? ? ? ? [_webView evaluateJavaScript:@"document.documentElement.offsetHeight" completionHandler:^(id_Nullable result, NSError *_Nullable error) {

? ? ? ? ? ? //獲取webView高度

? ? ? ? ? ? CGRect frame = _webView.frame;

? ? ? ? ? ? frame.size.height = [result doubleValue] + 50;

? ? ? ? ? ? _webView.frame = frame;

? ? ? ? ? ? _scrollViewHeight = 220 + _webView.height;

? ? ? ? ? ? _scrollView.contentSize = CGSizeMake(kScreenWidth, _scrollViewHeight);

? ? ? ? }];

? ? });

}

注:上邊的代理被棄用,太耗費時間了胸嘁。取而代之用下面的方法:(用的WKWebView舉例說明的)

---------------------

第一步:添加觀察者

[_webView.scrollView addObserver:selfforKeyPath:@"contentSize"options:NSKeyValueObservingOptionNewcontext:nil];

第二步:觀察者監(jiān)聽webView的contentSize變化

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {

? ? if ([keyPath isEqualToString:@"contentSize"]) {

? ? ? ? dispatch_async(dispatch_get_global_queue(0,0), ^{

? ? ? ? ? ? //document.documentElement.scrollHeight

? ? ? ? ? ? //document.body.offsetHeight

? ? ? ? ? ? [_webView evaluateJavaScript:@"document.documentElement.offsetHeight"completionHandler:^(id_Nullable result, NSError * _Nullable error) {

? ? ? ? ? ? ? ? CGRect frame =_webView.frame;

? ? ? ? ? ? ? ? frame.size.height = [result doubleValue] + 50;

? ? ? ? ? ? ? ? _webView.frame = frame;

? ? ? ? ? ? ? ? _scrollViewHeight =220 + _webView.height;

? ? ? ? ? ? ? ? _scrollView.contentSize =CGSizeMake(kScreenWidth,_scrollViewHeight);

? ? ? ? ? ? }];

? ? ? ? });

? ? }

}

第三步:移除觀察者

- (void)dealloc

{

? ? [_webView.scrollView removeObserver:selfforKeyPath:@"contentSize"];

}

總結(jié):以上這個方法瓶摆,不能說特別快速加載,但是在我這里速度至少提升了幾倍性宏。我也在找更好的優(yōu)化方法群井,比如緩存等等。有知道的更好的方法毫胜,歡迎貼出來书斜,大家共享!酵使!

---------------------

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末荐吉,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子口渔,更是在濱河造成了極大的恐慌样屠,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異痪欲,居然都是意外死亡混巧,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門勤揩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人秘蛔,你說我怎么就攤上這事陨亡。” “怎么了深员?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵负蠕,是天一觀的道長。 經(jīng)常有香客問我倦畅,道長遮糖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任叠赐,我火速辦了婚禮欲账,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘芭概。我一直安慰自己赛不,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布罢洲。 她就那樣靜靜地躺著踢故,像睡著了一般。 火紅的嫁衣襯著肌膚如雪惹苗。 梳的紋絲不亂的頭發(fā)上殿较,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天,我揣著相機(jī)與錄音桩蓉,去河邊找鬼淋纲。 笑死,一個胖子當(dāng)著我的面吹牛院究,可吹牛的內(nèi)容都是我干的帚戳。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼儡首,長吁一口氣:“原來是場噩夢啊……” “哼片任!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蔬胯,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤对供,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體产场,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡鹅髓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了京景。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片窿冯。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖确徙,靈堂內(nèi)的尸體忽然破棺而出醒串,到底是詐尸還是另有隱情,我是刑警寧澤鄙皇,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布芜赌,位于F島的核電站,受9級特大地震影響伴逸,放射性物質(zhì)發(fā)生泄漏缠沈。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一错蝴、第九天 我趴在偏房一處隱蔽的房頂上張望洲愤。 院中可真熱鬧,春花似錦顷锰、人聲如沸禽篱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽躺率。三九已至,卻和暖如春万矾,著一層夾襖步出監(jiān)牢的瞬間悼吱,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工良狈, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留后添,地道東北人。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓薪丁,卻偏偏與公主長得像遇西,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子严嗜,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,901評論 2 345

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