子视图可以使用自动布局自动调整其超级视图的大小吗?

时间:2013-12-07 17:37:11

标签: ios autolayout nsautolayout

如果您的视图没有约束,并且该视图的子视图具有相同大小的左,右,上,下约束,如果子视图的大小增加,则超视图的大小可能会自动增加到适应这些限制?

感谢。

2 个答案:

答案 0 :(得分:12)

是的,你可以这样做,而且可以在没有任何代码或子类化的情况下完成。例如,如果您在视图中嵌入了标签(numberOfLines = 0),并且它对超视图的所有边都有约束,以及宽度约束,则标签及其超级视图将垂直展开在标签上放一个大字符串。 superview应该仍然需要一些约束,比如superview的顶部和左侧,但是没有大小限制。

答案 1 :(得分:1)

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