开发中经常会遇到WKWebView
作为子视图在UIScrollView
内部展示图文详情的请款,例如:
图中,标题,作者头像昵称时间等都是原生,底部评论列表也是原生,只有中间部分是WKWebView
,这时候获取WKWebView
的contentSize.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
端我所采取的的就是初始高度设置较小,然后监听高度,是没有问题的。
存在的问题就是,如果前端的加载骨架过高,监听高度还是偏大。
有没有大神知道比较好的办法?
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)