使用xib中的自定义单元格在UITableView中的动态行高

时间:2017-09-04 22:40:34

标签: ios swift uitableview tableview cell

我在使自定义单元格使用动态行高时遇到了很多问题。

这是我自定义单元格的xib。

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!
}

Table view when I run my app

我无法弄清楚为什么这不起作用。任何帮助将不胜感激!

3 个答案:

答案 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,并按照您的预期自动设置单元格高度。

屏幕截图:enter image description here

答案 2 :(得分:0)

除了设置约束以便可以使用单元格+填充中的所有元素的高度来计算整体单元格高度,您还必须将标签的行数设置为零并将它们设置为单词如果必须根据内容增长,请换行。