子视图能否使用自动布局自动调整其父视图的大小?

8
如果您的视图没有任何约束条件,而该视图具有子视图,其左、右、上和下约束条件大小相等,如果子视图的大小增加,是否可能使父视图的大小自动增加以适应这些约束条件?
谢谢。
2个回答

14

是的,你可以这样做,并且可以在不编写代码或进行子类化的情况下完成。例如,如果您在视图中嵌入了一个标签(numberOfLines = 0),并且它有到父视图所有边缘的约束以及宽度约束,那么如果您在标签中放置一个大字符串,标签和其父视图将会在垂直方向上扩展。 父视图仍应具有一些约束,例如对其父视图的顶部和左侧某个约束,但无需大小约束。


1
这非常有帮助,谢谢。我可能需要澄清一下,魔法酱是从UILabel到Superview(在我的情况下是一个常规UIView)的“底部间距约束”。 - ObjectNameDisplay
在我的情况下,我还需要将Content Hugging Priority(垂直)设置为750,而不是250。 - landonandrey

1
如果超级视图是UIView的自定义子类,则可以完成此操作。您可以重写intrinsicContentSize以返回与您的父视图大小相关的大小。然后,当子视图的大小更改时,它可以使内在内容大小无效。我通常在超级视图的layoutSubviews部分中执行此操作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接