gpt4 book ai didi

ios - 当 UIWebView 完成加载时,如何强制重新布局 UITableViewCell?

转载 作者:行者123 更新时间:2023-11-28 15:23:09 25 4
gpt4 key购买 nike

我有一个表格 View ,其中每个单元格都包含一个 UIWebView 并且 WebView 的高度决定了单元格的高度。 TableView 使用 UITableViewAutomaticDimension

class TitleTableViewCell: UITableViewCell {

@IBOutlet weak var webViewHeight: NSLayoutConstraint!
@IBOutlet weak var webView: UIWebView!

override func awakeFromNib() {
super.awakeFromNib()
webView.scrollView.isScrollEnabled = false
webView.delegate = self
}

func configure(content: String?) {
if let contentHTML = content {
let html = ("<body style=\"font-family: '-apple-system'; font-size: 16; font-weight: bold; line-height: 135%; overflow-wrap: break-word\"><style>a{text-decoration: none; color: #d64a32;}img{max-width:100%; height: auto; margin: 12px 0px;}iframe{max-width:100%; height: auto;}</style><p style=\" text-align: left\">\(contentHTML)</p></body>")
webView.loadHTMLString(html, baseURL: nil)
}
}
}
extension TitleTableViewCell: UIWebViewDelegate {

func webViewDidFinishLoad(_ webView: UIWebView) {
webViewHeight.constant = webView.scrollView.contentSize.height
layoutIfNeeded()
}
}

当我按下这个屏幕时,单元格的高度是我在 estimatedRowHeight 中定义的高度,但它不会扩展到全高,直到我再次弹出并按下屏幕。如何在 webview 完成加载后立即强制展开单元格?

最佳答案

您应该创建一个调用 TableView Controller 的委托(delegate)。您应该在 cellForRowAt 中将此委托(delegate)设置为 self 并重新加载委托(delegate)函数 cellWebViewDidFinishLoad 中引用的索引路径的单元格。

Delegates.swift

protocol TitleCellDelegate: class {
func cellWebViewDidFinishLoad(_ indexPath: IndexPath)
}

TitleTableViewCell.swift

class TitleTableViewCell: UITableViewCell {
weak var delegate: TitleCellDelegate?
fileprivate var indexPath: IndexPath!

func configure(content: String?, indexPath: IndexPath) {
[...]

self.indexPath = indexPath
}
}

extension TitleTableViewCell: UIWebViewDelegate {
func webViewDidFinishLoad(_ webView: UIWebView) {
webViewHeight.constant = webView.scrollView.contentSize.height
layoutIfNeeded()
delegate?.cellWebViewDidFinishLoad(indexPath)
}
}

关于ios - 当 UIWebView 完成加载时,如何强制重新布局 UITableViewCell?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45642576/

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