iOS UIWebView如何获取到内容的高度呢?咱们常常会遇到项目中须要使用UIWebView来加载H5页面,可是页面的高度并不肯定,而咱们前端须要根据内容的高度呈现出来,且不容许webview滚动。前端
常见的场景多是在cell中嵌套了UIWebview,所以须要保证取获得正确的web内容的高度才能计算出cell的准确的高度;还有多是在tableview的header须要呈现webview加载的内容,下面才是问题列表等,这些都须要知道准确的内容高度。web
经过JS来获取高度:document.body.offsetHeight;
lua
可是问题又来了,第一次获取到的高度可能不是正确的,好比有图片的时候,内容先加载出来了,取得的高度就不正确了。spa
所以,一般会调用几回,并限制次数,若是高度出现不等,说明又变化了,则须要从新构建或者更新UI!code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#pragma mark - UIWebViewDelegate
- (void)webViewDidFinishLoad:(UIWebView *)webView {
CGFloat height = [[webView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight;"] intValue];
if (self.webViewHeight != height && self.count <= 3) {
self.webViewHeight = height;
self.count++;
[self updateUI];
}
}
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
self.webViewHeight = webView.scrollView.contentSize.height;
return YES;
}
|