对UITableViewCell contentView的AutoLayout约束不受尊重

我正在尝试创建动态调整表格视图单元格。 我通过使用这个非常详细和有用的答案完成了resize。

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

我的单元格目前在其contentView只有一个标签,约束设置为将所有标签边缘固定到contentView边缘。 这就是我在IB中所拥有的 在此处输入图像描述

使用heightForRowAtIndexPath的offscreen单元格计算单元格大小

 CGSize size = [cell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize]; 

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

在此处输入图像描述

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

Constrain to margins已启用: 在此处输入图像描述

Constrain to margins是禁用的: 在此处输入图像描述

如何禁用它?

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

在此处输入图像描述
在此处输入图像描述

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

在此处输入图像描述

相关链接:
什么是Xcode 6中的Storyboard中的“约束到边距”