【问题标题】:RootViewController animation transition, initial orientation is wrongRootViewController 动画过渡,初始方向错误
【发布时间】:2011-12-24 15:02:31
【问题描述】:

所以我按照这个线程: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 转换期间,新的视图控制器以纵向模式出现,而不是快速旋转到横向模式。

我确定:

  1. 我已将 UISupportedOrientation 设置为横向(主页按钮右侧)
  2. 对于每个视图控制器,在 shouldAutoRotateToOrientation 方法中,我只设置了横向

还有什么原因?

【问题讨论】:

    标签: iphone ios ipad uiinterfaceorientation


    【解决方案1】:

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

    [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];
    

    我知道在动画块中禁用/启用动画有点奇怪,但是交叉溶解动画,而旋转没有 - 视图控制器似乎已经旋转并准备好滚动。

    【讨论】:

    • 谢谢,这修复了其他与旋转无关的视觉疯狂。我对其进行了编辑以包括保留原始动画状态,而不是假设它应该是 YES。
    • 在 iOS 6 上似乎不适合我?其他人可以确认吗?
    • 在 iOS 6 上对我有用。这是有道理的,因为禁用动画只会影响之后提交的动画
    • 对我来说也适用于 iOS 6。
    • 为我在 iOS 6 上工作!不过,仍然不太明白为什么修复有效。
    【解决方案2】:

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

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

    【讨论】:

    • 这对我不起作用。新的视图控制器仍然以纵向模式出现,然后旋转到横向模式,如问题中所述。
    • 对于任何在 iOS 8.3 上阅读此内容的人来说,这只是在使用 Flip 过渡时看起来“不错”,但仍会显示一些控制器在目标控制器中调整大小。使用 setAnimationsEnabled 可以提供更好的视觉效果。
    • 允许对象沿过渡视图设置动画的好方法
    猜你喜欢
    • 2011-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-08
    相关资源
    最近更新 更多