iOS获取WKWebView的高度
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS获取WKWebView的高度相关的知识,希望对你有一定的参考价值。
参考技术A 在ios开发中获取webView高度是比较常用的,但是已知的几种方法里或多或少都有点问题。先提供最终方案,下面还有几种方式可以看看。
1、网页代理加载完成时获取高度。(因为webView中包含图片等资源它们加载过程中需要一定时间,只有当它们完全加载完成以后,获取的高度才是真正的高度)
2、KVO方式获取。(可能会出现跳动,不停刷新,加载资源或图片需要时间)
3、在html中设置特殊标签。(没试过)
这时候我们可以在 body标签内部再套一层标签, 然后再获取div的高度
按照这个办法来做的话,就可以准确的获取到webview的高度了,无论字体从大到小还是从小到大,获取的高度都是正确的。
获取 WKWebView 的内容高度不正确
【中文标题】获取 WKWebView 的内容高度不正确【英文标题】:Get content Height of WKWebView incorrect 【发布时间】:2018-06-01 04:38:55 【问题描述】:我正面临通过 Whooshkaa 播放列表链接 https://player.whooshkaa.com/player/playlist/show/2321?sharing=true 获取 WebView 内容高度的问题。
自定义 View 中的 WKWebView,加载 WebView 成功后我将重新计算框架视图。
我尝试了 3 种方法:
当 webView contentSize 像这样改变时创建一个观察者Example。 像这样评估JavaScript: func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!)
webView.evaluateJavaScript("document.body.offsetHeight") [weak self] (height, _) in
guard let height = height as? CGFloat else return
// Still 200
--->但是所有的情况都只返回200px的offsetHeight。 如您所见,它仍然缺少下面的播放列表内容。
还有其他方法/技巧可以让我正确获取 offsetHeight 吗?
【问题讨论】:
见这个例如:***.com/questions/27515236/… 试试这个***.com/questions/50578817/… 200px 似乎是正确的数字,您确定要更新 webview 高度吗? @ymutlu 这不正确,请看一下我发布的图片,并打开链接。你可以看到它们之间的不匹配。 我已添加图片作为答案,请检查。 【参考方案1】:200px 是您分享的页面的最小高度。您可能需要检查您的 webview 框架。
不要将 CGRect.zero 用于初始帧,这可能会导致页面加载错误。我添加了简单的代码示例,它可以正常工作。
【讨论】:
您的回答好像我必须减去 webView 框架?我用 WKWebView(frame: CGRect.zero) 创建了 WebView。我的目标是加载完成后需要根据 webView 的内容大小设置 webView 的框架。以上是关于iOS获取WKWebView的高度的主要内容,如果未能解决你的问题,请参考以下文章