我需要你的帮助才能做到这一点:
我有一个宽度等于屏幕宽度的视图。在这个视图中,我有2个子视图,宽度为父视图的1/2,方面1:1,因此父视图的高度应该等于子视图的高度。
之后我需要执行动画,它应该向父视图添加另一个视图并转换整个屏幕,如下所示:
我应该以编程方式使用autolayout来实现这一目标吗?如何让这种行为更容易?
答案 0 :(得分:2)
你可以......
首先,我不会将它们作为父视图的一半,而是:
然后当您添加新视图时,
然后致电
[UIView animateWithDuration:0.5 animations:^{
[view layoutIfNeeded];
}];
请注意,如果默认只有两个视图,您可以通过storyboard添加第一组约束(这比以编程方式更容易)。您可以通过编程方式执行其余操作:See Apple documentation。
就个人而言,我喜欢这种方法,因为你不需要对视图的大小或位置进行任何数学运算 - autolayout会为你解决这个问题。
答案 1 :(得分:1)
最简单的方法是。
为视图控制器实现“viewDidLayoutSubviews”方法,如下所示。
- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
}
在此方法中,找到父视图的当前宽度,并将其存储在变量“X”中。
首次加载视图时,请将宽度约束的常量设置为第一个和第二个视图的x / 2.
当第3个视图准备好显示时,为动画块内的所有三个视图设置宽度约束的常量为x / 3.