gpt4 book ai didi

ios - 如何创建一个动态更改其高度以适应其内容的表格 View 单元格?

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

我正在显示用户在 TableView 中编写的一些 Markdown 。我显示这些 Markdown 文本的方式是将 Markdown 转换为 HTML,然后在 UIWebview 上显示 HTML。因为,我可以使用一些很酷的 CSS。

经过一番研究,我发现我可以将 estimatedRowHeight 设置为一些内容,并将 rowHeight 设置为 UITableViewAutomaticDimension。我还了解了如何设置 UIWebView 的框架,使其适合其内容 here :

所以我写了这段代码:

var results: [Entry] = []

override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return results.count
}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("resultCell")
let webView = cell?.contentView.viewWithTag(1) as! UIWebView
let entry = results[indexPath.row]
webView.loadHTMLString(entry.htmlDescription, baseURL: nil)
webView.delegate = self

return cell!
}

override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
tableView.reloadData()
}

override func viewDidLoad() {
tableView.estimatedRowHeight = 400
tableView.rowHeight = UITableViewAutomaticDimension
}

func webViewDidFinishLoad(webView: UIWebView) {
let height = CGFloat(webView.stringByEvaluatingJavaScriptFromString("document.height")!.toFloat()!)
var frame = webView.frame
frame.size.height = height
webView.frame = frame
webView.scrollView.contentSize = frame.size
webView.scrollView.frame = frame

print(frame)
}

results 数组只是我要显示的内容。如您所见,我想在每个 Web View 中显示结果的 htmlDescription

webViewDidFinishLoad 委托(delegate)方法中,我只是做了前面提到的帖子所做的事情:评估一些 JS 并更新 Web View 的框架。

但是,这种行为与我的预期相去甚远。

  • 首先,表格 View 单元格的高度是默认高度。
  • 当我尝试滚动 WebView 时,我无法滚动。他们只是反弹回来。
  • 控制台显示:

Warning once only: Detected a case where constraints ambiguously suggest a height of zero for a tableview cell's content view. We're considering the collapse unintentional and using standard height instead.

我不知道什么建议 TableView 单元格的高度应为 0。

  • 控制台还会打印 Web View 的新框架。我只有 3 个网页 View ,但有 6 个框架:

(0.0, 0.0, 320.0, 315.0)

(0.0, 0.0, 320.0, 363.0)

(0.0, 0.0, 320.0, 216.0)

(0.0, 0.0, 320.0, 315.0)

(0.0, 0.0, 320.0, 363.0)

(0.0, 0.0, 320.0, 216.0)

高度似乎非常正确,而不是默认的表格 View 单元格高度。

我知道如果我可以的话我可以解决这个问题:

  • 在加载 HTML 之前了解 Web View 的内容大小,或者;
  • 当所有 Web View 加载完毕后重新加载表格 View 。 (因为我可能会有很多 WebView ,所以我应该尽可能少地调用 reloadData ,否则速度会非常慢。)

我该怎么做?

这不是 How to make UITableViewCell adjust height to fit its content? 的重复项因为该问题的表格 View 是静态的。其内容一旦加载就不会改变。但我的有一个可以加载 HTML 的 Web View 。

最佳答案

只需计算 cellForRowAt Index 中的高度并设置 table.rowHeight。看看这个链接可以帮助你

Insert in a tableView set to Autoresize cause a scroll issue

关于ios - 如何创建一个动态更改其高度以适应其内容的表格 View 单元格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37883334/

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