iOS 具有动态高度的 UIView 取决于内部元素的数量
iOS UIView with dynamic height depending on number of elements inside
我需要动态创建一个 UIView
并将其显示为 UITableView
或 UIScrollView
中的单元格。
如果不手动计算视图的高度(汇总所有元素的高度),我该如何做到这一点?
示例:我以编程方式在 UIView 中添加 2 个图像和 10 个垂直堆叠的文本。我把这个 UIView 放在单元格内容视图或滚动视图中。我如何确保视图展开自身以便显示内部的所有子视图?
编辑:
我想正确的方法是为每个子视图从上到下设置垂直和水平约束(包括最后一个元素的底部约束)。
问题是我无法为动态 UIView 中的每个元素设置高度限制,因为这些元素也有动态高度。
您不需要添加明确的高度限制。您将添加为子视图(图像视图、标签)的视图将具有自己的固有大小。只需确保您有前导、尾随、顶部和底部约束,单元格将自行调整大小。
Rounak 的回答很好但不完整。
对于内部有子视图的复杂视图,只需从上到下和侧面创建适当的约束就足够了。如果你没有明确设置高度限制,它会自动设置它自己的高度。
对于 UILabel
或 UIImageView
或 MyCustomCircleImage
等自定义叶视图,您必须覆盖 intrinsicContentSize
.
如果AutoLayout没有从上到下的constraints连接,它会变成固有尺寸。
我需要动态创建一个 UIView
并将其显示为 UITableView
或 UIScrollView
中的单元格。
如果不手动计算视图的高度(汇总所有元素的高度),我该如何做到这一点?
示例:我以编程方式在 UIView 中添加 2 个图像和 10 个垂直堆叠的文本。我把这个 UIView 放在单元格内容视图或滚动视图中。我如何确保视图展开自身以便显示内部的所有子视图?
编辑:
我想正确的方法是为每个子视图从上到下设置垂直和水平约束(包括最后一个元素的底部约束)。
问题是我无法为动态 UIView 中的每个元素设置高度限制,因为这些元素也有动态高度。
您不需要添加明确的高度限制。您将添加为子视图(图像视图、标签)的视图将具有自己的固有大小。只需确保您有前导、尾随、顶部和底部约束,单元格将自行调整大小。
Rounak 的回答很好但不完整。
对于内部有子视图的复杂视图,只需从上到下和侧面创建适当的约束就足够了。如果你没有明确设置高度限制,它会自动设置它自己的高度。
对于 UILabel
或 UIImageView
或 MyCustomCircleImage
等自定义叶视图,您必须覆盖 intrinsicContentSize
.
如果AutoLayout没有从上到下的constraints连接,它会变成固有尺寸。