gpt4 book ai didi

swift - TableView Cell 的高度不会根据 WebView 动态变化

转载 作者:行者123 更新时间:2023-11-30 10:48:50 25 4
gpt4 key购买 nike

我在Tableview单元格中使用了WKWebView,它的高度不会根据webView内的内容而改变。

如果我直接在 webview 中加载 htmlString,即使调用 updateCellHeight() 之后,单元格的高度也不会改变。

这是我的自定义单元格(urlString 来自 API 调用响应,因此每次都会不同):

let cell1: NewCatDescrDCell = tableView.dequeueReusableCell(withIdentifier: "cellID", for: indexPath) as! NewCatDescrDCell
if !loaded {
cell1.urlString = "<p>Headers and Builders</p>"
cell1.configure()
cell1.tableView = tableView
}

loaded = true
return cell1

}

这是NewCatDecrDCell单元格:

class NewCatDescrDCell: UITableViewCell, WKNavigationDelegate {

let webView = WKWebView()
var tableView: UITableView!
var heights : CGFloat = 1200.0
var heightconstraint: NSLayoutConstraint!

var urlString: String = ""

override func awakeFromNib() {
super.awakeFromNib()

webView.translatesAutoresizingMaskIntoConstraints = false

contentView.addSubview(webView)

webView.topAnchor.constraint(equalTo: contentView.topAnchor).isActive = true
webView.rightAnchor.constraint(equalTo: contentView.rightAnchor).isActive = true
webView.leftAnchor.constraint(equalTo: contentView.leftAnchor).isActive = true
webView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor).isActive = true
webView.allowsBackForwardNavigationGestures = true


}


func configure() {

webView.navigationDelegate = self
webView.scrollView.isScrollEnabled = true
webView.loadHTMLString(urlString, baseURL: nil)

}

@objc func updateCellHeight() {
heights = webView.scrollView.contentSize.height

heightconstraint = webView.heightAnchor.constraint(equalToConstant: heights)
heightconstraint.isActive = true

tableView.reloadData()
}

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
Timer.scheduledTimer(timeInterval: 0.5, target: self, selector: #selector(updateCellHeight), userInfo: nil, repeats: false)
}

}

如果我使用urlWebView内加载,height会动态变化,但它不适用于HTMLString.

最佳答案

我在 Stackoverflow 上发现了与 WKWebView 高度相关的类似问题。

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
self.webView.evaluateJavaScript("document.readyState", completionHandler: { (complete, error) in
if complete != nil {
self.webView.evaluateJavaScript("document.body.scrollHeight", completionHandler: { (height, error) in
self.containerHeight.constant = height as! CGFloat
})
}

})}

试试这个或者在 Stackoverflow 上引用这个 How to determine the content size of a WKWebView?

关于swift - TableView Cell 的高度不会根据 WebView 动态变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55099415/

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