WKWebView高度自适应

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

IMG_6771.PNG
图中,标题,作者头像昵称时间等都是原生,底部评论列表也是原生,只有中间部分是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端我所采取的的就是初始高度设置较小,然后监听高度,是没有问题的。
存在的问题就是,如果前端的加载骨架过高,监听高度还是偏大。
有没有大神知道比较好的办法?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值