gpt4 book ai didi

ios - 无法正确获取 WKWebView 内容高度

转载 作者:搜寻专家 更新时间:2023-11-01 07:12:09 24 4
gpt4 key购买 nike

我正在尝试获取 WKWebView 中呈现的文本的高度,以便稍后可以调整 View 大小以适合它。我正在使用下面的代码,它确实通过 result 返回了一个值。然而,如果我缩短(或加长)htmlString,这个值不会改变。有什么建议吗?

import UIKit
import WebKit

class ViewController: UIViewController, WKNavigationDelegate {

var webView: WKWebView!

var htmlString: String = "<!DOCTYPE html><html><body><p>Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor, facilisis luctus, metus.Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante.</p></body></html>"

override func viewDidLoad() {
super.viewDidLoad()

//Instantiate with initial frame
webView = WKWebView(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: 100), configuration: WKWebViewConfiguration())
self.view.addSubview(webView)

webView.loadHTMLString(htmlString, baseURL: nil)

webView.evaluateJavaScript(("document.body.scrollHeight"), completionHandler: { result, error in
print(result)
})
}

}

最佳答案

您的代码存在的问题是您在加载 HTML 字符串后立即评估 document.body.scrollHeight。要获得正确的高度,您必须等待 HTML 加载,这需要一些时间,尤其是在您第一次加载 HTML 字符串时。
这就是为什么您必须在此委托(delegate)方法中评估 document.body.scrollHeight 的原因:

 func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
webView.evaluateJavaScript("document.documentElement.scrollHeight") { (height, error) in
print(height as! CGFloat)
}
}

我在 blog post 中写过这个问题以及如何在 CSS 中使用自定义字体的情况下找到正确的高度.

关于ios - 无法正确获取 WKWebView 内容高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44266874/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com