UIView transitionWithView自定义动画选项



我有一个应用程序,它首先显示登录屏幕。一旦用户登录,就会执行以下代码:

[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?我并没有接受这个解决方案,它只是我能通过谷歌/SO搜索找到的最接近的东西。

任何帮助都将是伟大的,谢谢!

使用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];

要进行更改,必须首先将ViewController及其视图添加到父ViewController。一个简单的技巧可以把它添加到你窗户的"屋顶"上(起始Y位置=-self.view.bounds.size.height)。然后使用

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

然后只需在动画括号内创建所需的动画。

最新更新