【发布时间】:2015-05-07 06:33:36
【问题描述】:
我需要你的帮助才能做到这一点:
我有一个宽度等于屏幕宽度的视图。在这个视图中,我有 2 个子视图,宽度为父视图的 1/2,纵横比为 1:1,因此父视图的高度应等于子视图的高度。
之后我需要执行动画,它应该向父视图添加另一个视图并像这样转换整个屏幕:
我应该以编程方式使用自动布局来实现这一点吗?如何更容易地获得这种行为?
【问题讨论】:
标签: ios objective-c uiview autolayout
我需要你的帮助才能做到这一点:
我有一个宽度等于屏幕宽度的视图。在这个视图中,我有 2 个子视图,宽度为父视图的 1/2,纵横比为 1:1,因此父视图的高度应等于子视图的高度。
之后我需要执行动画,它应该向父视图添加另一个视图并像这样转换整个屏幕:
我应该以编程方式使用自动布局来实现这一点吗?如何更容易地获得这种行为?
【问题讨论】:
标签: ios objective-c uiview autolayout
你可以……
首先,我不会让它们成为父视图的一半,而是:
那么当你添加新视图时,
然后调用
[UIView animateWithDuration:0.5 animations:^{
[view layoutIfNeeded];
}];
请注意,如果默认只有两个视图,您可以通过情节提要添加第一组约束(这比以编程方式进行更容易)。其余部分您可以通过编程方式完成:See Apple documentation。
就我个人而言,我喜欢这种方法,因为您不必对视图的大小或位置进行任何数学运算 - 自动布局会为您计算出来。
【讨论】:
最简单的方法是。
为视图控制器实现“viewDidLayoutSubviews”方法,如下所示。
- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
}
在这个方法中,找到当前父视图的宽度,并将其存储在一个变量“X”中。
第一次加载视图时,将第一个和第二个视图的宽度约束常量设置为 x/2。
当第三个视图准备好显示时,将动画块内所有三个视图的宽度约束常量设置为 x/3。
【讨论】: