iOS8-为所有不工作的子视图设置动画
我试图在显示键盘时设置所有视图的动画,以避免重叠 然而,这一老把戏似乎不再奏效:iOS8-为所有不工作的子视图设置动画,ios,uiview,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]; } 知道为什么吗
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上,它们确实如此。两者都使用自动布局。如果使用自动布局,则不应再使用帧设置动画,而应使用约束常量 还要记住,“子视图”数组属性只包含直接的“子”视图。这可能会影响一些事情,具体取决于您的设置 编辑我刚刚注意到问题只出现在iOS7/iPhone4上。自动布局和iOS7/iOS8兼容性存在已知问题 它归结为更新如何沿视图层次传播 关于这个问题,有许多stackoverflow帖子:
可能是因为要在顶部移动的内容不在self.view层次结构中。是否使用自动布局?这可能会影响帧动画。这段代码在运行iOS7.1.2的iPhone4上运行良好。你能描述一下它有什么不起作用吗?当我运行您发布的代码时,我看到我的视图动画化了位置的变化。@IanMacDonald-我的意思是,在运行iOS8的iPhone6上,视图没有动画化。但是,他们在我的运行iOS 7.1.2的iPhone4上会这样做。有关于这方面的指南或更多详细信息吗?为什么它可以在iOS 7.1.2上工作而不能在iOS 8上工作?然而,想想苹果的API,这可能是一个愚蠢的问题。请看我的最新答案。这是一个已知的问题,由两个操作系统版本处理约束更新的不同方式引起。