首先个人认为WKWebView 无论在各方面都优于WebView,所以文本介绍的是WKWebView的高度获取,当然了,改一改是可以用在WebView中的。
场景
场景1 :商品详情 (webView 在中间)
场景2 :主题详情 (webView 在头部)
场景3 :商品详情 (webView 在尾部)
以上三种场景是开发中我们常会遇到的,这里涉及到一个webView内容高度获取的问题,对于这个问题要思考的有以下几种情况:
- 网页中图片过大,导致加载缓慢
- 网页中有按钮可以改变webView的内容高度
- 内容一点一点加载 or 内容加载完后再展示
以上的情况根据产品需求来取舍。
获取高度的方式有两种:
- 监听WKWebView中scrollView 的contentSize的变化
- WkWebView内容加载完毕再获取高度(推荐)
监听的方法:
iOS【终极方案】精准获取webView内容高度,自适应高度
看这个就好了,但是我没有用,因为webView内容过多会造成tableView 频繁刷新。
加载完再获取高度:
遵守协议WKNavigationDelegate
yourWebView.navigationDelegate = self;
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation {
self.webView.scrollView.scrollEnabled = NO;
[webView evaluateJavaScript:@"document.body.scrollHeight"
completionHandler:^(id result, NSError *_Nullable error) {
//result 就是加载完成后 webView的实际高度
//获取后返回重新布局
}];
}
第二种会使等待时间过长。
根据使用场景自行选择