所以我关注了这个话题: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 转换期间,新 View Controller 以纵向模式出现,而不是快速旋转到横向模式。
我确定:
- 我已将 UISupportedOrientation 设置为横向(主页按钮向右)
- 对于每个 View Controller ,在 shouldAutoRotateToOrientation 方法中,我只设置横向
还有什么其他原因?
最佳答案
我刚刚调查了这个问题,因为我一直遇到同样的问题。我随机尝试了以下方法,并且效果很好:
[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];
我知道在动画 block 中禁用/启用动画有点奇怪,但是交叉溶解动画,而旋转则没有—— View Controller 看起来已经旋转并准备好滚动。
关于iphone - RootViewController 动画过渡,初始方向错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8053832/