2

出于某种原因,我无法为两个子视图位置设置两个动画。我写了以下

[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动画。但是,如果我注释掉我添加子视图控制器视图的行,subview那么self.stepsView动画正确。

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

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

谢谢

4

2 回答 2

5

In the section on view animation in the View Programming Guide there is a specific mention of how to animate subviews.

Basically, you should use transitionWithView:duration:options:animations:completion: rather than animateWithDuration:delay:options:animations:completion:.

于 2013-04-16T21:06:32.667 回答
0

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

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

于 2013-04-16T13:31:25.987 回答