iOS 具有动态高度的 UIView 取决于内部元素的数量

iOS UIView with dynamic height depending on number of elements inside

我需要动态创建一个 UIView 并将其显示为 UITableViewUIScrollView 中的单元格。

如果不手动计算视图的高度(汇总所有元素的高度),我该如何做到这一点?

示例:我以编程方式在 UIView 中添加 2 个图像和 10 个垂直堆叠的文本。我把这个 UIView 放在单元格内容视图或滚动视图中。我如何确保视图展开自身以便显示内部的所有子视图?

编辑:

我想正确的方法是为每个子视图从上到下设置垂直和水平约束(包括最后一个元素的底部约束)。

问题是我无法为动态 UIView 中的每个元素设置高度限制,因为这些元素也有动态高度

您不需要添加明确的高度限制。您将添加为子视图(图像视图、标签)的视图将具有自己的固有大小。只需确保您有前导、尾随、顶部和底部约束,单元格将自行调整大小。

Rounak 的回答很好但不完整。

对于内部有子视图的复杂视图,只需从上到下和侧面创建适当的约束就足够了。如果你没有明确设置高度限制,它会自动设置它自己的高度。

对于 UILabelUIImageViewMyCustomCircleImage 等自定义叶视图,您必须覆盖 intrinsicContentSize.

如果AutoLayout没有从上到下的constraints连接,它会变成固有尺寸。