UIView transitionWithView自定义动画选项

时间:2014-11-02 21:36:21

标签: ios uiviewanimation

我有一个首先显示登录屏幕的应用程序。用户登录后,将执行以下代码:

[UIView transitionWithView:self.view.window
                              duration:0.7
                               options:UIViewAnimationOptionTransitionNone
                            animations:^{
                                self.view.window.rootViewController = menuController;
                            } completion:^(BOOL finished) {
                                // Code to run after animation

                            }];

这按预期工作;但是,我想定义自己的自定义动画选项,而不是左/右选项的翻转。

一个简单的例子是将新视图控制器从上到下滑动到屏幕上。如何在更改rootViewController时执行此操作?

此外,是否有一种完全不同的方法来动画切换rootViewController?我没有和这个解决方案结婚,这是我通过Google / SO搜索找到的最接近的东西。

任何帮助都会很棒,谢谢!

2 个答案:

答案 0 :(得分:2)

使用CATransition应该可以为您提供所需的动画类型。当然,我从未真正尝试使用rootViewController,但是要从上到下滑动视图,我建议尝试这样做:

CATransition *transition = [CATransition animation];
transition.duration = 1.0;
transition.type = kCATransitionFromBottom;
transition.subtype = kCATransitionFade;

CALayer *layer = self.view.window.rootViewController.view.layer;
[layer addAnimation:transition forKey:kCATransition];

答案 1 :(得分:0)

要进行更改,您必须先将 ViewController及其视图添加到父viewController 。一个简单的技巧可能是在屋顶上添加它#34;你的窗口(从Y position = -self.view.bounds.size.height开始)。然后使用

[UIView animateWithDuration:
                      delay:
                    options:
                 animations:^{}
                 completion:^(BOOL finished){
                     self.view.window.rootViewController = menuController;
                 }];

然后只需在动画括号内创建您想要的动画。