我有一个首先显示登录屏幕的应用程序。用户登录后,将执行以下代码:
[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搜索找到的最接近的东西。
任何帮助都会很棒,谢谢!
答案 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;
}];
然后只需在动画括号内创建您想要的动画。