我试图在显示键盘时动画所有视图以避免重叠。
然而,这个老技巧似乎不再奏效:
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。
答案 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)