假设我有一个项目,看起来像这样:
有两个UIView
- 一个名为yellowBox
,另一个名为redBox
。 自动布局约束规定yellowBox
距离超级视图顶部60个点,左右各350个点的空白(即在视图左侧和右侧)。 redBox
具有相同的前导和后续空间约束。 两个框之间有0的垂直空间约束,表示yellowBox
的底部始终直接位于redBox
上方。
当用户点击“展开黄盒子”按钮时,我希望yellowBox
的高度增加,并因此使redBox
向下移动,以继续满足垂直空间约束(即yellowBox
始终在redBox
上面)。 这是动画代码:
- (IBAction)expandYellowBox:(id)sender {
[UIView animateWithDuration:0.5
animations:^{
CGRect newFrame = self.yellowBox.frame;
newFrame.size.height += 50;
self.yellowBox.frame = newFrame;
}];
}
然而,我一直无法正确地让它工作。正如你所看到的红色图标一样,目前约束存在问题:
这很公平,因为自动布局无法知道框的高度。然而,我不知道如何以这样的方式解决此问题,以使箱子可以调整大小和移动。例如,如果我在yellowBox
上指定高度约束,则会防止其被调整大小。如果我将高度约束设置为大于或等于(允许yellowBox
高度增加),那么我会得到不同的约束错误:
所有约束都是在Storyboard中使用Xcode建立的 - 没有在代码中编写任何内容。
非常感谢任何帮助。
编辑:事实证明,在单击按钮时yellowBox
正在增长 - 只是因为它出现在redBox
后面,我没能发现。只有在点击了四次后,它才开始从redBox
底部出现。然而,相同的问题仍然存在 - 如何使redBox
始终保持在yellowBox
底部。
viewDidLayoutSubViews
方法没有被调用。 - Skoota