我创建了一个自定义 UIView 类,在其中创建 2 个 UILabels 和 1 个 UIImageView。我为每个元素设置了约束。由于标签将保存动态文本,每个 View 将具有不同的高度。如何调整 View 的高度?约束(从上到下)是:
View Top > 16 > Label1 > 8 > ImageView > 8 > Label2 > 16 > View Bottom
问题是:我必须用框架初始化 UIView。无论我尝试什么, View 总是使用初始化给出的框架高度。我无法计算所有元素的高度并设置新框架,因为标签有时是 1 行,有时是 5 行。
This is how the view looks at runtime This is how its supposed to look like
提前致谢
最佳答案
您必须使用框架初始化 View ,但是在初始化后将 translatesAutoresizingMaskIntoConstraints
设置为 false
时,传入的框架将变得无关紧要。因此,您可以按照@BallpointBen在注释中建议的操作并传入 .zero
:
let newCustomView = CustomView(frame: .zero)
newCustomView.translatesAutoresizingMaskIntoConstraints = false
// auto layout constraints should now determine height
关于ios - 如何调整父 View 的大小以符合 subview 的约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49903856/