Iphone RootViewController动画过渡,初始方向错误

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:^{

因此,我遵循以下线程:将window.rootViewController从A传输到B再传输到C。代码如下所示:

[UIView transitionWithView:self.window 
                  duration:0.5 
                   options: UIViewAnimationOptionTransitionFlipFromLeft 
                animations:^{
                               self.window.rootViewController = newViewController;
                } 
                completion:nil];
问题是我的应用程序只支持横向,但在rootViewController转换期间,新的视图控制器以纵向模式显示,而不是快速旋转到横向模式

我确信:

  • 我已将UI支持设置为横向(主页按钮右侧)
  • 对于每个viewcontroller,在shouldAutoRotateTooOrientation方法中,我仅为横向设置

  • 另一个原因是什么呢?

    我刚才研究过这个问题,因为我一直都遇到同样的问题。我随机尝试了以下方法,效果非常好:

    [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可以提供更好的视觉效果。这是一个很好的答案,可以让对象沿转换视图设置动画