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

标签 iphone ios ipad uiinterfaceorientation

所以我关注了这个话题: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 以纵向模式出现,而不是快速旋转到横向模式。

我确定:

  1. 我已将 UISupportedOrientation 设置为横向(主页按钮向右)
  2. 对于每个 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/

相关文章:

iphone - 在 map 上显示谷歌方向 api 响应

iphone - 如何检查数组中的值是否不为 NULL?

ios - 是否有可能创建对结构数组元素的引用?

iphone - 在模拟器中正常,但在 ios 设备中抛出异常

ios - 如何在 iOS 8 中正确确定 Today 扩展的左边距?

iphone - 如何在 Facebook 分享期间显示应用程序名称代替 "ios"

iphone - Xcode - 未找到 SenTestingKit

ios - 在 swift 类中实现 AsyncSocket 回调

ios - 获取具有所有属性值的所有 UIView subview ,iOS

objective-c - UITableView 实际上并没有重新加载它的数据,即使数据源方法正在返回新数据