当用户按下另一个视图控制器内的注销按钮时,我使用通知中心在app delegate中触发选择器。 我想要将已触发的方法设置为动画回放到应用委托中的登录视图控制器。
这是我的第一次尝试:
LoginViewController *loginController = [[LoginViewController alloc] init];
[UIView transitionFromView:self.window.rootViewController.view
toView:loginController.view
duration:3.0f
options:UIViewAnimationOptionTransitionFlipFromLeft
completion:^(BOOL finished){
self.window.rootViewController = loginController;
}];
这不起作用,因为rootViewController 在没有动画的情况下即时设置。
这是我的第二次尝试(在此处引用:RootViewController Switch Transition Animation)
[UIView transitionWithView:self.window
duration:0.5
options:UIViewAnimationOptionTransitionFlipFromLeft
animations:^{ self.window.rootViewController = [[LoginViewController alloc] init]; }
completion:nil];
这个几乎有效,但是动画非常多 - 你可以在动画中看到错误的视图,拉伸的元素等等,很明显它不像你期望的那样动画。
知道做这个动画的正确方法是什么?