1

我已经实现了一个仅用于自动旋转的视图控制器。所以这个视图控制器,我称之为RotatableViewController,实现了这些方法:

- (UIInterfaceOrientation) preferredInterfaceOrientationForPresentation
{
    return UIInterfaceOrientationPortrait;
}

- (NSUInteger) supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskAll;
}

- (BOOL) shouldAutorotate {
    return YES;
}

它应该自动旋转到所有方向,我还检查了目标中支持的界面方向:

在此处输入图像描述

但令人难以置信的是,它不会在纵向倒置方向上自动旋转:

在此处输入图像描述

可能是什么问题呢?

PS在 iOS 6.1 中,视图控制器通过情节提要进行实例化。

4

2 回答 2

2

问题是您使用的是UINavigationController,它在 iPhone 上默认不支持倒置。作为一般设计原则,iPhone 应用程序不应该支持倒置(据称是因为 iPhone 上的“锁定”开关确实锁定了横向模式,这与 iPad 不同)。倒置方向仅适用于 iPad 设备。

您可以通过子类化UINavigationController并使用 asupportedInterfaceOrientations返回UIInterfaceOrientationMaskAll并将其指定为情节提要中导航控制器的基类来解决您的问题。但我不认为你应该这样做,因为 iPhone 上的应用程序通常不支持倒置纵向。

于 2013-09-01T22:11:42.413 回答
1

旧版本的 UIInterfaceOrientationMaskAll 存在问题。不确定您使用的是哪个版本。尝试重做所有方向。

- (NSUInteger) supportedInterfaceOrientations
{
    return (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight | UIInterfaceOrientationMaskPortraitUpsideDown);
}
于 2013-09-01T21:08:27.680 回答