对于使用自动调整掩码创建的自定义UIViews,并将设置为“是”的“自动调整”设置为“是”,在什么时候自动调整会成为约束?我的猜测是,当视图添加到其超级视图时会发生这种情况,但是在视图对其自己的方法的调用之间发生:
willMoveToSuperview:
和
didMoveToSuperview
修改
UIView.h说:
默认情况下,视图上的自动调整遮罩会产生完全决定视图位置的约束。您在视图上设置的任何约束都可能与自动调整约束冲突,因此您必须首先关闭此属性。 IB会为你关掉它。
我在钩子之前和之后添加了记录,并且令人惊讶地显示:
SpringsNStruts[1195:60b] willMoveToSuperview
SpringsNStruts[1195:60b] self.constraints (
)
SpringsNStruts[1195:60b] newSuperview.constraints (
"<NSLayoutConstraint:0x8cdbd50 V:[UIView:0x8cdba70(140)]>"
)
SpringsNStruts[1195:60b] didMoveToSuperview
SpringsNStruts[1195:60b] self.constraints (
)
SpringsNStruts[1195:60b] superview.constraints (
"<NSLayoutConstraint:0x8cdbd50 V:[UIView:0x8cdba70(140)]>"
)
这不直观。那么从autoresizing mask转换为约束应该创建的约束在哪里呢?我还没有找到任何解释这里发生的事情的文档。有人知道吗?