iOS8 - 动画所有子视图无效

时间:2015-02-02 17:51:15

标签: ios uiview

我试图在显示键盘时动画所有视图以避免重叠。

然而,这个老技巧似乎不再奏效:

 for (UIView *subview in self.view.subviews){
     CGRect r = subview.frame;
     r.origin.y += yOffSet;
     [UIView animateWithDuration:duration animations:^{subview.frame = r;} completion:block];
 }

知道为什么吗?

====更新

这些子视图在我运行iOS8的iPhone6上没有动画效果。然而,他们在运行iOS 7.1.2的iPhone4上运行。两者都使用AutoLayout。

1 个答案:

答案 0 :(得分:2)

如果您使用自动布局,则不应再使用框架设置动画,而是使用约束常量。

另请注意,“subviews”数组属性仅包含直接的“子”视图。这可能会影响一些事情,具体取决于您的设置。

编辑我刚注意到问题只发生在iOS7 / iphone 4上。自动布局和iOS7 / iOS8兼容性存在已知问题。

归结为更新如何沿视图层次结构传播。

此主题上有许多stackoverflow帖子:

Auto-Layout Issues: iOS 7 vs iOS8

Issue with Auto Layout on iOS 8 (code works perfectly on iOS 7)