iOS中獲取UIWebView的高度,當(dāng)嵌套在UITableView中。

在實際開發(fā)中,經(jīng)常碰見用富文本來展示內(nèi)容,但有時候并不是整個界面都是富文本,這就出現(xiàn)半原生半富文本。這時候就需要使用UITableView嵌套UIWebView,把UIWebView添加到cell里面來展示。唯一需要解決的問題就是監(jiān)控UIWebView的高度。下面講述兩種方法來監(jiān)控高度。

一、在webViewDidFinishLoad方法里進行監(jiān)控

   CGFloat height = [[self.webView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight"] floatValue];
   self.webView1.frame = CGRectMake(self.webView1.frame.origin.x,self.webView1.frame.origin.y, SWidth, height+20);  
    [self.tableView reloadData];

這種方法有時候會出現(xiàn)計算偏差,導(dǎo)致你的網(wǎng)頁被砍掉了一部分,沒有顯示出來。原因是由于網(wǎng)頁有包含大量圖片,當(dāng)webView加載完成的時候,其實并沒有把圖片加載出來,也就是說調(diào)用webViewDidFinishLoad這個方法的時候,其實網(wǎng)頁里面圖片還沒有加載出來。導(dǎo)致圖片的高度并沒有計算出來。所以導(dǎo)致計算出現(xiàn)偏差。方法二就解決了這個問題。

二、通過KVO(鍵值監(jiān)聽機制)進行監(jiān)控高度

首先我們要注冊觀察者

 [_webView.scrollView addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionNew context:nil];

其次我們實現(xiàn)其代理方法

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context {
if ([keyPath isEqualToString:@"contentSize"]) {
        CGSize fittingSize = [_webView sizeThatFits:CGSizeZero];
        NSLog(@"webview %@",NSStringFromCGSize(fittingSize));
        CGRect webFrame = _webView.frame;
        webFrame.size.height = fittingSize.height;
        _webView.frame = webFrame;
        [self.webTableView reloadData];
    }
}

最后記得移除觀察者

[self.webView removeObserver:self forKeyPath:@"contentSize"];

這樣就可以完美解決UIWebView高度問題。

希望能幫助到你。

Best regards

Roger

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,631評論 1 32
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,175評論 4 61
  • 今日大雨,雷聲閃電并作。 我又虛度一天光陰,頗感懊惱。 因看些公益記錄片的緣故,我越是發(fā)覺學(xué)中醫(yī)勢在必行。我著急,...
    麟聿閱讀 182評論 0 1
  • 看到一篇文章,講什么是抑郁呢,最后說到抑郁是愛的附屬品,以前有位老師說過,我們每天都在制造被愛的機會,不會放過任何...
    阿難說閱讀 212評論 0 1

友情鏈接更多精彩內(nèi)容