对UITableViewCell contentView的AutoLayout约束未得到尊重

时间:2015-06-03 13:16:25

标签: ios uitableview autolayout uilabel

我正在尝试动态调整表格视图单元格。我使用this answer完成了调整大小,这非常详细和有用。

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

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

使用

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

在此过程中,似乎它正在遵循约束,并且label.preferredMaxLayoutWidth属性被设置为320,但是当标签实际被渲染时,仍然存在填充。

enter image description here

1 个答案:

答案 0 :(得分:13)

填充是布局边距。你必须要小心Constrain to margins选项。

Constrain to margins已启用: enter image description here

Constrain to margins已停用: enter image description here

如何停用它?

  1. 您可以双击其中一个约束并取消选中Relative to margin选项:
  2. enter image description here
    enter image description here

    1. 在创建标签约束时取消选中Constrain to margins
    2. enter image description here

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