调整 WKWebView 框架大小时,内容大小损坏

时间:2021-03-21 16:46:59

标签: ios swift objective-c wkwebview

执行 didFinishNavigation 后,我尝试调整 WKWebView 框架的大小,导致加载的内容大幅调整大小。如何避免这种情况?

比如加载页面后,我想使用evaluationJavaScript从WKWebView中获取信息来调整内容的大小,并将WKWebView设置为合适的大小。

2 个答案:

答案 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
        })
    }
相关问题