我有一个最初为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中处理它们一样?我甚至不会看到旧的旋转方法被调用,所以看起来好像这不仅仅是典型的"弃用"。他们似乎完全取消了对这些方法的调用。
任何帮助或建议?
答案 0 :(得分:12)
你在使用故事板吗?如果是这样,您可能会在application didFinishLaunchingWithOptions
方法中使用旧代码。
尝试删除以下代码行以及与UIWindow
相关的任何其他代码:
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
其他人已经说要删除plist文件中的行,但这不是必需的。
答案 1 :(得分:6)
我有一个类似的问题,我通过从应用程序的信息属性列表中删除UIMainStoryboardFile和UIMainStoryboardFile~ipad键来修复它
答案 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中查看控制器进展”,并讨论这个问题。