我在使自定义单元格使用动态行高时遇到了很多问题。
这是我自定义单元格的xib。
在我的表视图的viewDidLoad中,我设置了以下值:
self.tableView.estimatedRowHeight = 80.0
self.tableView.rowHeight = UITableViewAutomaticDimension
但在加载表时似乎没有使用动态大小。
下面是我的cellForRowAtIndexPath函数。
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// Configure the cell...
let cell = Bundle.main.loadNibNamed("RedditCell", owner: self, options: nil)?.first as? RedditPostCellTableViewCell
let post = self.model?.getPostAt(index: indexPath.row)
cell?.title.text = post?.title
cell?.author.text = post?.author
cell?.upvotes.text = "\(post?.upvotes ?? -1)"
return cell!
}
我无法弄清楚为什么这不起作用。任何帮助将不胜感激!
答案 0 :(得分:0)
请尝试在override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
self.tableView.estimatedRowHeight = 80
return UITableViewAutomaticDimension
}
{{1}}
答案 1 :(得分:0)
您无需预先计算身高。问题在于您的自定义UITableViewCell
中的约束。您的约束应该设置为强制UITableViewCell扩展以显示整个标签或任何其他内容的方式。只需设置类似于我的简短示例项目的约束:https://www.transfernow.net/216sw6l1bler?lng=en,并按照您的预期自动设置单元格高度。
答案 2 :(得分:0)
除了设置约束以便可以使用单元格+填充中的所有元素的高度来计算整体单元格高度,您还必须将标签的行数设置为零并将它们设置为单词如果必须根据内容增长,请换行。