App旋转适用于iOS7,但不适用于iOS8

时间:2014-11-10 01:48:52

标签: ios objective-c cocoa-touch ios8 uikit

我在iOS8中让我的应用在纵向和横向之间旋转时遇到问题。它在iOS7中运行良好。在我的主视图控制器中,我有以下内容。

- (BOOL)shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation)interfaceOrientation {
    return YES;     // for iOS7 compatibility
}

- (BOOL)shouldAutorotate {
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations {
    return  UIInterfaceOrientationMaskAll;
}

我可以确认(通过调试)在iOS8启动时调用后两个,但不在屏幕旋转上调用。

我正在使用自动布局,并且在IB中没有错误和警告。 (在启动时调试器中也没有)。

Info.plist文件具有“UISupportedInterfaceOrientations”和“UISupportedInterfaceOrientations~ipad”的所有4个方向。

这有点不寻常,因为在模拟器(8.1)中,无论方向如何,应用程序始终以纵向模式启动。但是在设备(8.0)上,应用程序始终以当前方向启动。但是,两者都不允许在应用内轮换。

我已经浏览了互联网和Apple的文档。我们将非常感谢任何正确方向的想法或指示。

3 个答案:

答案 0 :(得分:0)

1)首先点击你的项目 2)然后单击常规选项卡。在部署信息下,您将找到设备方向 3)检查所有四个选项。

可能这会对你有所帮助。 如果不能正常工作,请通知我 感谢

答案 1 :(得分:0)

在你的appdelegate中使用它。

 -(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
    return UIInterfaceOrientationMaskAll;
else  /* iphone */
    return UIInterfaceOrientationMaskAllButUpsideDown;
}

答案 2 :(得分:0)

我终于发现了这个问题。我一直在应用程序委托的'initialize'方法中调用'beginGeneratingDeviceOrientationNotifications':

+ (void)initialize {
    // ...
    [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
}

自iOS早期以来这种情况一直很好,并且这个电话似乎没有被弃用,但由于某些原因它在iOS8中不再适用 - 至少在早期阶段不行。轻松解决。感谢所有考虑过这个问题的人。