转载

UIWebView如何获取内容高度

iOS UIWebView如何获取到内容的高度呢?我们经常会遇到项目中需要使用UIWebView来加载H5页面,但是页面的高度并不确定,而我们前端需要根据内容的高度呈现出来,且不允许webview滚动。

常见的场景可能是在cell中嵌套了UIWebview,因此需要保证取得到正确的web内容的高度才能计算出cell的准确的高度;还有可能是在tableview的header需要呈现webview加载的内容,下面才是问题列表等,这些都需要知道准确的内容高度。

UIWebView如何获取内容高度

解决办法

通过JS来获取高度: document.body.offsetHeight;

但是问题又来了,第一次获取到的高度可能不是正确的,比如有图片的时候,内容先加载出来了,取得的高度就不正确了。

因此,通常会调用几次,并限制次数,如果高度出现不等,说明又变化了,则需要重新构建或者更新UI!

实现代码

 
#pragma mark - UIWebViewDelegate
- (void)webViewDidFinishLoad:(UIWebView *)webView {
  CGFloat height = [[webViewstringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight;"]intValue];
  if (self.webViewHeight != height && self.count <= 3) {
    self.webViewHeight = height;
    self.count++;
    
    [self updateUI];
  }
}
 
- (BOOL)webView:(UIWebView *)webViewshouldStartLoadWithRequest:(NSURLRequest *)requestnavigationType:(UIWebViewNavigationType)navigationType {
  self.webViewHeight = webView.scrollView.contentSize.height;
  return YES;
}
 

微信公众号

专注于IT行业技术专题,提供IT专题优质文章,欢迎关注标哥的技术博客!加入技术交流群,点击“最新公告”查看!

站长联系方式

站长QQ:632840804,微信号:huangyibiao520

欢迎投稿

本站接收来自大家的投稿,只需要将`.md`文件及所需要的图片文件,整体放到文件夹并压缩,并注明作者及原文链接,发到邮箱: huangyibiao520@163.com 或者 632840804@qq.com

UIWebView如何获取内容高度

  • 版本声明:本文由本站辛勤的作者在标哥的技术博客原创撰写并发布,欢迎分享本文,转载请保留出处和链接!

原文  http://www.huangyibiao.com/archives/1341
正文到此结束
Loading...