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

所以我跟着这个线程:RootViewController切换过渡动画来将window.rootViewController从A传递到B到C.代码如下所示:

[UIView transitionWithView:self.window 
                  duration:0.5 
                   options: UIViewAnimationOptionTransitionFlipFromLeft 
                animations:^{
                               self.window.rootViewController = newViewController;
                } 
                completion:nil];

问题是我的应用只支持风景,但在rootViewController转换期间,新的视图控制器以纵向模式出现,而不是快速旋转到横向模式。

我确定:

  • 我已将UISupportedOrientation设置为横向(主页右键)
  • 对于每个viewcontroller,在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];
    

    我知道在动画块中禁用/启用动画有点奇怪,但交叉会消除动画,并且旋转不会 - 视图控制器看起来已经旋转并准备好滚动。


    只需放入另一个动画选项UIViewAnimationOptionAllowAnimatedContent

    [UIView transitionWithView:self.window duration:0.5 options:(UIViewAnimationOptionTransitionFlipFromLeft | UIViewAnimationOptionAllowAnimatedContent) animations:^{
        self.window.rootViewController = newViewController;
    } completion:nil];
    
    链接地址: http://www.djcxy.com/p/68287.html

    上一篇: RootViewController animation transition, initial orientation is wrong

    下一篇: pushing nil rootViewController onto target <UINavigationController