所以我按照这个帖子:RootViewController Switch Transition Animation将window.rootViewController从A转移到B到C.代码如下:
[UIView transitionWithView:self.window
duration:0.5
options: UIViewAnimationOptionTransitionFlipFromLeft
animations:^{
self.window.rootViewController = newViewController;
}
completion:nil];
问题是我的应用程序只支持横向,但在rootViewController过渡期间,新的视图控制器以纵向模式显示,而不是快速旋转到横向模式。
我确信:
可能是另一个原因?
答案 0 :(得分:119)
我刚刚看了这个,因为我一直都遇到同样的问题。我随机尝试了以下内容,它完美无缺:
[UIView
transitionWithView:window
duration:0.5
options:UIViewAnimationOptionTransitionCrossDissolve
animations:^(void) {
BOOL oldState = [UIView areAnimationsEnabled];
[UIView setAnimationsEnabled:NO];
[(ICApp *)sharedApplication.delegate window].rootViewController = self;
[UIView setAnimationsEnabled:oldState];
}
completion:nil];
我知道在动画块中禁用/启用动画有点奇怪,但交叉消除了动画,旋转没有 - 视图控制器似乎已经旋转并准备好滚动。
答案 1 :(得分:9)
只需输入另一个动画选项UIViewAnimationOptionAllowAnimatedContent
:
[UIView transitionWithView:self.window duration:0.5 options:(UIViewAnimationOptionTransitionFlipFromLeft | UIViewAnimationOptionAllowAnimatedContent) animations:^{
self.window.rootViewController = newViewController;
} completion:nil];