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;
}
|