Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS8-为所有不工作的子视图设置动画_Ios_Uiview - Fatal编程技术网

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,这可能是一个愚蠢的问题。请看我的最新答案。这是一个已知的问题,由两个操作系统版本处理约束更新的不同方式引起。