如何调整superview的大小以符合子视图约束

时间:2018-04-18 15:43:39

标签: ios swift view autolayout constraints

我创建了一个自定义的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

提前致谢

1 个答案:

答案 0 :(得分:0)

您必须使用框架初始化视图,但在初始化后将translatesAutoresizingMaskIntoConstraints设置为false时,传入的框架将变得无关紧要。因此,您可以在评论中推荐@BallpointBen并传递.zero

let newCustomView = CustomView(frame: .zero)
newCustomView.translatesAutoresizingMaskIntoConstraints = false

// auto layout constraints should now determine height