自动布局在自定义 UITableViewCell 中被忽略

尽管对所有元素都设置了约束,包括计算单元格高度所需的垂直约束,但自动布局似乎被忽略了: 所有单元格都被压缩了。

下面是故事板中的结果和约束的截图:

enter image description here

enter image description here

在保存 tableView 的 VC 中,以下是 翻译:中的代码

tableView.estimatedRowHeight = 120.0
tableView.rowHeight = UITableViewAutomaticDimension

注释掉第二行会得到高度为120.0的单元格,但是 Autolayout 也会被忽略。


更新

为了简化界面,我留下了一个单独的标签,作为约束:

  • 把空间引向监控
  • 最上面的空间
  • 固定宽度及高度(100及100)
  • 底部空间到容器边距,以确保单元格具有所有垂直约束来确定其高度

通过这个简化的界面,自动布局仍然没有被考虑进去,这暗示我问题不是来自于糟糕的设置约束。

在“大小检查器”中,将行高设置为120,并选中“自定义”。单元格具有正确的自定义类,单元格重用标识符是正确的。

14614 次浏览

I think the problem is that you are implementing :

func tableView(_ tableView: UITableView, heightForRowAt indexPath:
IndexPath) -> CGFloat {


return x
}

You need to remove this function inorder for the tableview to calculate its automatic height for cells.

Auto-layout was ignored because both the prototype cell AND the UIView of the cell had been given the custom cell class in IB.

Setting the UIView back to UIView class solved the problem.

just to be über clear