2

可能重复:
iOS 6 中的自动旋转有奇怪的行为

我有 IOS 6 的问题,显示显示为纵向而不是横向。我同时使用真实设备和模拟器设备,如果我在 5.1 模拟器上构建游戏,如果我使用模拟器版本 6 或带有版本 6 的真实设备,视图将正确呈现,视图将获得纵向视图。这是我的代码。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

if( interfaceOrientation == UIInterfaceOrientationLandscapeLeft ||
       interfaceOrientation == UIInterfaceOrientationLandscapeRight )
        return YES;

知道如何解决此类问题吗?

谢谢急诊室

4

3 回答 3

1

该方法shouldAutorotateToInterfaceOrientation已在 iOS 6 中弃用。它已替换为以下内容:

- (BOOL)shouldAutoRotate {

    return YES;
}

- (NSUInteger)supportedInterfaceOrientations {

    return UIInterfaceOrientationMaskLandscape;
}

此外,还有一个非常重要的细节来完成这项工作。在您的 AppDelegate 中,确保更改以下内容:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    [self.window setRootViewController:<your main view controller here>];
}

如果您使用[self.window addSubview:self.mainViewController.view],它将无法正常工作。

于 2012-11-04T19:54:18.857 回答
1

ShouldAutoRotation 不再适用于 iOS 6。请改用supportedInterfaceOrientations。

您可以在此处获取更多信息:http: //dhilipsiva.blogspot.com/2012/07/ios-6-ui-interface-orientation.html

希望这可以帮助。

于 2012-11-04T19:50:56.303 回答
0

如果您想同时支持 iOS 5 和 iOS 6,请将 shouldAutorotateToInterfaceOrientation 留在您的代码中;只知道它不会在 iOS6 设备上调用。

@Simon 给出的示例应该能够与您的原始代码和平共处,任一操作系统调用其适用的方法。我能够在我的应用程序中实现类似的东西,但我使用项目设置为 iOS 6 设置自动旋转,并且只留下我的 shouldAutorotateToInterfaceOrientation 以使应用程序也与 iOS 5 兼容。

于 2012-11-04T20:01:19.007 回答