wkwebView高度计算那点事

首先个人认为WKWebView 无论在各方面都优于WebView,所以文本介绍的是WKWebView的高度获取,当然了,改一改是可以用在WebView中的。

场景

场景1 :商品详情 (webView 在中间)

场景2 :主题详情 (webView 在头部)

场景3 :商品详情 (webView 在尾部)

以上三种场景是开发中我们常会遇到的,这里涉及到一个webView内容高度获取的问题,对于这个问题要思考的有以下几种情况:

  1. 网页中图片过大,导致加载缓慢
  2. 网页中有按钮可以改变webView的内容高度
  3. 内容一点一点加载 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的实际高度
            //获取后返回重新布局
             }];
}

第二种会使等待时间过长。

根据使用场景自行选择

你可能感兴趣的:(wkwebView高度计算那点事)