我有一个应用程序,它首先显示登录屏幕。一旦用户登录,就会执行以下代码:
[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;
}];
然后只需在动画括号内创建所需的动画。