执行 didFinishNavigation 后,我尝试调整 WKWebView 框架的大小,导致加载的内容大幅调整大小。如何避免这种情况?
比如加载页面后,我想使用evaluationJavaScript从WKWebView中获取信息来调整内容的大小,并将WKWebView设置为合适的大小。
答案 0 :(得分:0)
您所指的使用 javascript 检测 webview 内容高度并手动设置高度的方法应该适合您。
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
print("webview did enter did finish navigation")
webView.evaluateJavaScript("document.readyState", completionHandler: { (complete, error) in
if complete != nil {
webView.evaluateJavaScript("document.body.scrollHeight", completionHandler: { (result, error) in
if let heightOfContent = result as? CGFloat {
}
})
}
})
}
我也认为@binaryPilot 有一个很好的建议。
<块引用>有一个名为 sizeThatFits(CGSize)
的属性试图调整大小
内容到提供的大小。你可以提供那个原始框架
CGSize
到该参数后 didFinishNavigation 强制内容
模式。见:[这里][1]
[1]:https://developer.apple.com/documentation/uikit/uiview/1622619-contentmode
答案 1 :(得分:0)
您可以在加载时使用以下代码设置 webview 高度
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
webView.evaluateJavaScript("document.documentElement.scrollHeight", completionHandler: { (height, error) in
self.webViewHeightConstraint?.constant = height as! CGFloat
})
}