可以子视图自动调整自己的超级视图自动布局?

如果您有一个没有约束的视图,并且该视图具有大小相等的左,右,顶部和底部约束的子视图,则如果子视图的大小增加,则超级视图的大小可以自动增加以适应这些约束?

谢谢。

是的,你可以做到这一点,它可以做到没有任何代码或子类。 例如,如果您在视图中embedded了一个标签(numberOfLines = 0),并且它对superview的所有边以及宽度约束都有约束,那么标签和它的superview将会垂直展开把一个大string放在标签中。 superview应该仍然需要一些限制,比如superview的左上angular,但是没有大小限制。

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