iOS 8 - 应用程序无法正常旋转

时间:2014-10-24 17:52:14

标签: ios rotation ios8

我有一个最初为iOS 7.1开发的应用程序,我现在正在通过Xcode 6.1在iPad上进行测试。在运行7.1或在7.1模拟器的iPad上运行时,应用程序按预期运行。在8.1 iPad或8.1模拟器上,似乎旋转处理不当。我看到顶部的状态栏旋转,但应用程序本身不会改变。我知道这与iOS 8中不推荐使用的旋转方法有关。我的问题是......现在是什么???

我还没有找到任何文档,为如何使用新的iOS 8机制处理轮换提供简明的答案。有没有办法优雅地处理iOS 8中的旋转,就像我在iOS 7中处理它们一样?我甚至不会看到旧的旋转方法被调用,所以看起来好像这不仅仅是典型的"弃用"。他们似乎完全取消了对这些方法的调用。

任何帮助或建议?

3 个答案:

答案 0 :(得分:12)

你在使用故事板吗?如果是这样,您可能会在application didFinishLaunchingWithOptions方法中使用旧代码。

尝试删除以下代码行以及与UIWindow相关的任何其他代码:

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

其他人已经说要删除plist文件中的行,但这不是必需的。

答案 1 :(得分:6)

我有一个类似的问题,我通过从应用程序的信息属性列表中删除UIMainStoryboardFile和UIMainStoryboardFile~ipad键来修复它

看看这个讨论 https://devforums.apple.com/message/1064397#1064397

答案 2 :(得分:1)

像这样使用viewWillTransitionToSize:withTransitionCoordinator:

- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
{
    [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];

    // Will rotate

    [coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context) {
        // Will animate rotation
    } completion:^(id<UIViewControllerTransitionCoordinatorContext> context) {
        // Did rotate
    }];
}

您应该看一下WWDC 2014视频“在iOS 8中查看控制器进展”,并讨论这个问题。