Iphone RootViewController动画过渡,初始方向错误
因此,我遵循以下线程:将window.rootViewController从A传输到B再传输到C。代码如下所示:Iphone RootViewController动画过渡,初始方向错误,iphone,ios,ipad,uiinterfaceorientation,Iphone,Ios,Ipad,Uiinterfaceorientation,因此,我遵循以下线程:将window.rootViewController从A传输到B再传输到C。代码如下所示: [UIView transitionWithView:self.window duration:0.5 options: UIViewAnimationOptionTransitionFlipFromLeft animations:^{
[UIView transitionWithView:self.window
duration:0.5
options: UIViewAnimationOptionTransitionFlipFromLeft
animations:^{
self.window.rootViewController = newViewController;
}
completion:nil];
问题是我的应用程序只支持横向,但在rootViewController转换期间,新的视图控制器以纵向模式显示,而不是快速旋转到横向模式
我确信:
另一个原因是什么呢?我刚才研究过这个问题,因为我一直都遇到同样的问题。我随机尝试了以下方法,效果非常好:
[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];
我知道在动画块内禁用/启用动画有点奇怪,但交叉溶解会动画,旋转不会——视图控制器似乎已经旋转并准备好滚动。只需输入另一个动画选项
UIViewAnimationOptionAllowAnimatedContent
:
[UIView transitionWithView:self.window duration:0.5 options:(UIViewAnimationOptionTransitionFlipFromLeft | UIViewAnimationOptionAllowAnimatedContent) animations:^{
self.window.rootViewController = newViewController;
} completion:nil];
谢谢,这修正了其他与旋转无关的视觉疯狂。我编辑它是为了保留原始动画状态,而不是假设它应该是“是”。在iOS 6上似乎对我不起作用?其他人能确认吗?在iOS 6上对我有效。这是有道理的,因为禁用动画只会影响我在iOS 6上提交的动画。在iOS 6上对我有效!但我还是不太明白为什么修复会起作用。这对我不起作用。新的视图控制器仍然以纵向模式显示,然后旋转到横向模式,如问题中所述。对于任何阅读iOS 8.3的人来说,这只在翻转过渡时看起来“良好”,但仍然显示一些控制器在目标控制器中调整大小。使用SetAnimationEnabled可以提供更好的视觉效果。这是一个很好的答案,可以让对象沿转换视图设置动画