具有动态大小的 Cell 的复杂 AutoLayout
Complex AutoLayout for Cell with dynamic size
我有一个包含 10 个子视图的容器的单元格(其中两个只是边界,其他是标签)。该方案看起来像这样。
动态标签可能包含大量文本,因此单元格应符合适当的大小以适合内容。问题是如何手动设置所有约束......我自己尝试了十几次,但似乎我不太擅长这个。 table 视图支持自动标注行高并使用自定义估计高度。
在 Storyboard 中看起来是这样的。
其中蓝色视图是 视图 C 的子视图。后面的灰色视图是 View B。粗体标签是静态的,其他是动态的。
如何设置约束条件?
非常感谢您!
我设法设置了您的约束,以便您获得所需的结果。这是我得到的:
我希望这是你想要的样子。
这里是 link 和 project。
我将尝试解释我是如何添加约束的,以便它更有意义。
- 首先,您有视图 B,它需要与
contentView
一样大。为此,您将 top/bottom/left/right 约束添加到 superView。因为您使用的是自动维度,所以如果您添加所有优先级为 1000(最大)的约束,您将在 运行 时遇到一些约束错误。这是因为,在可以自动计算像元大小之前,它为零,因此约束崩溃了。因此,我将 top 和 trailing space 的优先级设置为 999,这样您就不会再看到错误日志了。结果是一样的
- 然后视图C需要(顶部或底部)/left/right和高度限制
- 然后您需要为标签添加约束条件。由于您需要正确的多行,因此约束需要为此特定情况指定垂直布局。所以,你有如下:第一个标签:top/left 命名标签和超级视图的权利。其他都是top到上一个,bottom到下一个。
- 对于不需要调整大小的标签,您只需要前导 space 到父级,水平 space 到正确的标签和静态宽度。此外,您将需要一个约束来将顶部与右侧的标签对齐。
这是我得到的结果:
希望我的解释是有道理的,如果您有任何问题,请告诉我。祝你的项目好运!
我有一个包含 10 个子视图的容器的单元格(其中两个只是边界,其他是标签)。该方案看起来像这样。
动态标签可能包含大量文本,因此单元格应符合适当的大小以适合内容。问题是如何手动设置所有约束......我自己尝试了十几次,但似乎我不太擅长这个。 table 视图支持自动标注行高并使用自定义估计高度。
在 Storyboard 中看起来是这样的。
其中蓝色视图是 视图 C 的子视图。后面的灰色视图是 View B。粗体标签是静态的,其他是动态的。
如何设置约束条件?
非常感谢您!
我设法设置了您的约束,以便您获得所需的结果。这是我得到的:
我希望这是你想要的样子。
这里是 link 和 project。 我将尝试解释我是如何添加约束的,以便它更有意义。
- 首先,您有视图 B,它需要与
contentView
一样大。为此,您将 top/bottom/left/right 约束添加到 superView。因为您使用的是自动维度,所以如果您添加所有优先级为 1000(最大)的约束,您将在 运行 时遇到一些约束错误。这是因为,在可以自动计算像元大小之前,它为零,因此约束崩溃了。因此,我将 top 和 trailing space 的优先级设置为 999,这样您就不会再看到错误日志了。结果是一样的 - 然后视图C需要(顶部或底部)/left/right和高度限制
- 然后您需要为标签添加约束条件。由于您需要正确的多行,因此约束需要为此特定情况指定垂直布局。所以,你有如下:第一个标签:top/left 命名标签和超级视图的权利。其他都是top到上一个,bottom到下一个。
- 对于不需要调整大小的标签,您只需要前导 space 到父级,水平 space 到正确的标签和静态宽度。此外,您将需要一个约束来将顶部与右侧的标签对齐。
这是我得到的结果:
希望我的解释是有道理的,如果您有任何问题,请告诉我。祝你的项目好运!