同时动画两个UIView子视图不起作用

时间:2013-04-15 21:14:18

标签: 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 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.stepsViewIBOutlet UIViewself.photosViewController.view是已添加到视图中的子视图控制器视图。

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

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

需要帮助,因为我在几个月前用另一个应用程序跑到这里,不得不做一个肮脏的黑客来绕过它,现在想要解决这个问题。

由于

2 个答案:

答案 0 :(得分:5)

View Programming Guide中有关查看动画的部分,有specific mention如何为子视图设置动画。

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

答案 1 :(得分:0)

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

更改第二个视图以填充屏幕。再一次,你所看到的取决于它的初始位置。