Ios 同时设置两个UIView子视图的动画不起作用

Ios 同时设置两个UIView子视图的动画不起作用,ios,xcode,uiview,uiviewcontroller,core-animation,Ios,Xcode,Uiview,Uiviewcontroller,Core Animation,由于某些原因,我无法设置两个子视图位置的动画。我写了以下内容 [self addChildViewController:self.photosViewController]; [self.photosViewController.view setFrame:CGRectMake(0, -self.view.frame.size.height, self.view.frame.size.width, self.view.frame.size.height)]; [self.view add

由于某些原因,我无法设置两个子视图位置的动画。我写了以下内容

[self addChildViewController:self.photosViewController];
[self.photosViewController.view setFrame:CGRectMake(0, -self.view.frame.size.height,    self.view.frame.size.width, self.view.frame.size.height)];

[self.view addSubview:self.photosViewController.view];

[UIView animateWithDuration:1 delay:0
                        options:UIViewAnimationOptionCurveEaseIn
                     animations:^{

                         [self.stepsView setFrame:CGRectMake(0, self.view.frame.size.height, self.view.frame.size.width, self.view.frame.size.height)];
                         [self.photosViewController.view setFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
                     }
                     completion:^(BOOL finished) {
                         if (finished) {

                             button.tag = 0;
                         }
                     }];
self.stepsView
是一个
IBOutlet
UIView
self.photosViewController.view
是一个已添加到视图中的子视图控制器视图

对于当前代码,只有
self.PhotosViewController.view
会设置动画。但是,如果我将添加子视图控制器视图的行注释为
子视图
,则
self.stepsView
将正确设置动画

即使在调用此方法之前添加子视图控制器及其视图,也会发生相同的错误

需要帮助,因为几个月前我用另一个应用程序遇到了这个问题,不得不进行一次卑鄙的黑客攻击来绕过它,现在我想解决这个问题


谢谢

第一个视图将不可见,因为它的原点.y超出了可见视图的高度。如果在动画开始时它不可见,您当然什么也看不到


第二个视图更改为填充屏幕。同样,您看到的内容取决于其初始位置。

在中的“视图动画”部分中,有一部分介绍了如何设置子视图动画


基本上,您应该使用
transitionWithView:duration:options:animations:completion:
而不是
animateWithDuration:delay:options:animations:completion:

是self.stepsView在调用动画块时非nil?为什么要同时调用addChildViewController和addSubView?@jsd-Its在IB中,我从不将其从视图中删除从来都不是这样nil@sixthcent因为根据我对苹果文档和视频的理解,他们说应该始终添加视图的视图控制器,您要将其添加为子视图,作为您正在添加的视图控制器的子视图控制器。。。如果这有意义的话。我的评论是由您的语句提示的,即如果您注释掉addSubview部分,视图将显示动画。看起来你可能需要做两个独立的动画,一个接一个。如果您在第一个动画中隐藏stepsView,然后启动动画以在完成处理程序中显示photosView,您可能能够实现您想要的。对不起,应该已经提到了。我有意将photosViewController设置在视图上方。动画的要点是设置屏幕上self.stepsView向下的动画,同时从顶部将self.PhotosViewController.View设置为屏幕上的动画(如果有意义的话)。还请注意,这两个动画都可以工作。只是不在一起。如果我将self.PhotosViewController.view添加为子视图,则self.stepsView根本不会设置动画,只会在另一个视图设置动画时保持静止。其中一个视图是否具有非标识变换?如果是这样的话,你就不能设置帧的动画,而应该使用“中心”来代替。另外,这可能与视图的相对位置有关。请尝试
insertSubview:atIndex:0
而不是
insertSubview:
。谢谢,很抱歉回复太晚,因为我已经标记了此答案