WKWebView高度自适应

WKWebView高度自适应,第1张

开发中经常会遇到WKWebView作为子视图在UIScrollView内部展示图文详情的请款,例如:


图中,标题,作者头像昵称时间等都是原生,底部评论列表也是原生,只有中间部分是WKWebView,这时候获取WKWebViewcontentSize.height就是关键了,但是在iOS里面如果我们通过

webViewContentSizeObserver = webView?.observe(\.scrollView.contentSize,options: [.new,.old], changeHandler: { [weak self](web, value) in

            self?.webView?.snp.updateConstraints({ maker in

                maker.height.equalTo(web.scrollView.contentSize.height)

            })

 })

来获取高度的话,有一个问题,就是如果初始的设置:

webView?.snp.makeConstraints({maker in

            maker.left.trailing.equalToSuperview()

            maker.top.equalTo(conditionHeaderView.snp.bottom)

            maker.height.equalTo(10)

        })

如果这里的height初始值比较大,而你实际的内容高度比较小,就会使监听的高度有问题,偏大,下面会有一大段空白。应该是系统的问题吧?有没有大神知道的?

网上还有说让前端回传scrollHeight的方式,但是依然无法避免这个问题。而且前端如果遇到图片懒加载,或者其他的处理,scrollHeight回传时机又是个问题。

还有例如在代理方法中获取高度的办法:

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {

        debugPrint("custom useragent is \(String(describing: webView.customUserAgent))")

    }

也是不可取的,图片懒加载就会有问题。

目前在iOS端我所采取的的就是初始高度设置较小,然后监听高度,是没有问题的。
存在的问题就是,如果前端的加载骨架过高,监听高度还是偏大。
有没有大神知道比较好的办法?

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/994146.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存