不遵守对 UITableViewCell contentView 的 AutoLayout 约束

AutoLayout constraints to UITableViewCell contentView not respected

我正在尝试创建动态调整大小的 table 视图单元格。我使用 this answer 完成了调整大小,这非常详细且很有帮助。

但是,heightForRowAtIndexPath 中未正确计算标签的最大宽度。

我的单元格目前在其contentView 中只有一个标签,约束设置为将所有标签边缘固定到contentView 边缘。这是我在 IB 中拥有的

正在使用

heightForRowAtIndexPath 中的屏幕外单元格计算单元格大小
CGSize size = [cell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];

在这个过程中,似乎是在遵守约束条件,label.preferredMaxLayoutWidth 属性 被设置为 320,但是当标签真正被渲染时,仍然有填充。

填充是布局边距。您必须注意 Constrain to margins 选项。

Constrain to margins 已启用:

Constrain to margins 已禁用:

如何禁用它?

  1. 您可以双击约束之一并取消选中 Relative to margin 选项:


  1. 在创建标签约束时取消选中 Constrain to margins

相关link:
What is "Constrain to margin" in Storyboard in Xcode 6