具有dynamic大小的单元格的复杂AutoLayout

我有一个包含10个子视图的容器(其中两个是简单的界限,其他是标签)。 该计划看起来像这样。

在这里输入图像说明

dynamic标签可能包含巨大的文本,所以单元格应该符合适当的大小以适应内容。 问题是如何手动设置所有的约束…我已经尝试了十几次自己做,但似乎我不擅长这一点。 表视图支持行高的自动尺寸,并使用自定义的估计高度。

在故事板中,它看起来是这样的。

在这里输入图像说明

其中蓝色视图是视图C的子视图 。 后面的灰色视图是视图B. 粗体标签是静态的,其他标签是dynamic的。

演示项目 。

如何设置约束?

提前非常感谢!

我设法设置你的约束,以便得到你需要的结果。 这是我得到的:

我希望这是你想要的样子。

这是与该项目的链接。 我将尝试解释我如何添加约束条件,使其更有意义。

  • 首先,你有观点B需要像contentView一样大。 为此,向superView添加顶部/底部/左/右限制。 因为您正在使用自动维度,所以如果您添加优先级为1000的所有约束(最大维度),那么在运行约束时会出现一些错误。 这是因为,在单元格大小可以自动计算之前,它是零,所以约束崩溃。 因此,我设置优先级为999的顶部和尾部空间的优先级,以便您不再看到错误日志。 结果是一样的。
  • 然后查看C需求(顶部或底部)/左/右和高度约束
  • 然后,您需要添加标签的约束。 既然你需要正确的有多行,约束需要指定这种情况下的垂直布局。 所以,你有如下:第一个标签:顶部/左边的名称标签和权利超级观点。 所有其他的都有上一个,下一个到下一个。
  • 对于不需要resize的标签,只需将前导空间添加到父项,将水平空间添加到正确的标签和静态宽度。 另外,您需要一个约束来将顶部与右侧的标签alignment。

这是我得到的结果:

希望我的解释有意义,只要让我知道你是否有问题。 祝你的项目好运!