我创建了一个自定义的UIView类,我创建了2个UILabel和1个UIImageView。我为每个元素设置了约束。由于标签将保存动态文本,因此每个视图将具有不同的高度。如何调整视图的高度?约束(从上到下)是:
View Top > 16 > Label1 > 8 > ImageView > 8 > Label2 > 16 > View Bottom
问题是:我必须使用框架初始化UIView。无论我尝试什么,视图总是使用初始化给出的帧的高度。我无法计算所有元素的高度并设置一个新的框架,因为标签有时是1行,有时是5行。
This is how the view looks at runtime This is how its supposed to look like
提前致谢
答案 0 :(得分:0)
您必须使用框架初始化视图,但在初始化后将translatesAutoresizingMaskIntoConstraints
设置为false
时,传入的框架将变得无关紧要。因此,您可以在评论中推荐@BallpointBen并传递.zero
:
let newCustomView = CustomView(frame: .zero)
newCustomView.translatesAutoresizingMaskIntoConstraints = false
// auto layout constraints should now determine height