我有一个带有两个视图(greenView、redView)和一个开关的视图控制器:
我对 greenView 的 redView 顶部空间有 50px 的限制。以下是 redView 的所有约束:
我有一个开关,当点击时将 greenView 的高度从 50px 切换到 100px。
当我启动应用程序时,视图按我想要的方式布置,但是当点击开关时,greenView 框架的高度从 50 变为 100,redView 没有做我所期望的 - 这是改变它的y 位置向下 50px 以保持分配给它的顶部空间约束。我在 redView 的底部空间放置了一个不等式约束,所以没有冲突,我也在调用[self.redView layoutIfNeeded]
.
以下是相关代码:
- (IBAction)switchTapped {
if (theSwitch.isOn) {
greenView.frame = CGRectMake(0, 30, 320, 100);
[redView layoutIfNeeded];
} else {
greenView.frame = CGRectMake(0, 30, 320, 50);
[redView layoutIfNeeded];
}
为什么 redView 的 y 位置没有更新?
我看过 WWDC 视频,但他们似乎顺便提到了调用 layoutIfNeeded。我错过了什么?
这是启动时的样子:
这是当开关被点击时: