iOS:为什么选择superview';s";“布局子视图”;当视图具有约束且已调整大小时,是否不调用?

iOS:为什么选择superview';s";“布局子视图”;当视图具有约束且已调整大小时,是否不调用?,ios,ios-autolayout,Ios,Ios Autolayout,在我正在处理的当前项目中,我有两个视图,view1和view2。view2是view1的子视图。我注意到,如果没有为view2定义约束,当我调整view2的大小时,会调用view1的“layoutsubviews”,后跟view2的。但是,如果我在view1中向中心视图2添加了约束,则调整view2的大小将只触发view2的“布局子视图” 我找不到任何文件来解释这一点。这是预期的吗?为什么行为不同?我认为原因是: 当我们将约束设置为view2时,肯定会导致view2本身约束和帧的更改,但是如果v

在我正在处理的当前项目中,我有两个视图,view1和view2。view2是view1的子视图。我注意到,如果没有为view2定义约束,当我调整view2的大小时,会调用view1的“layoutsubviews”,后跟view2的。但是,如果我在view1中向中心视图2添加了约束,则调整view2的大小将只触发view2的“布局子视图”


我找不到任何文件来解释这一点。这是预期的吗?为什么行为不同?

我认为原因是:

当我们将约束设置为view2时,肯定会导致view2本身约束和帧的更改,但是如果view2在view1中依赖(这意味着view2对view1没有约束,view2对view1中的其他子视图没有约束),在这种情况下,view2约束的更改不会导致view1的约束更改,当然不会导致view1的layoutSubviews

如果调整view2(内部视图)的大小,它每次都会调用view2的
layoutSubviews
。我理解这一点,但为什么在存在约束时不调用view1的“layoutSubviews”?这就是让我困惑的地方。这不会是因为据我所知,
view2
依赖于
view1
,所以更改
view2
不会调用
layoutsubviews