0

我开始了一个示例项目并将以下代码添加到我的视图控制器中。启动后屏幕将是横向的。然后我去我的故事板,点击我唯一的视图,-> 编辑器-> 嵌入-> 导航控制器。再次启动程序:屏幕将是纵向的,无论我尝试什么都不会变成横向。这是为什么?(我的 plist 中启用了所有方向。)

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskLandscapeRight | UIInterfaceOrientationMaskLandscapeLeft;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    return UIInterfaceOrientationLandscapeRight;
}

@end
4

1 回答 1

1

在 iOS 6 中,规则是一旦你在一个 UINavigationController 中,supportedInterfaceOrientations这个视图控制器 (ViewController) 就无关紧要了。唯一咨询的是:

  • 应用程序 (Info.plist)。

  • 应用委托 ( application:supportedInterfaceOrientationsForWindow:)

  • 根视图控制器,在您的情况下现在是 UINavigationController

现在,我不完全明白为什么你的 UINavigationController 给你一个只有肖像的结果。但我知道,如果你想控制UINavigationController 对旋转的作用,你必须继承 UINavigationController 的子类,使这个导航控制器成为你的子类的一个实例,并将supportedInterfaceOrientations代码放入你的子类中。

注意我试着按照你说的做,在我的机器上,导航控制器确实对所有三个标准方向执行补偿旋转。所以我不明白你为什么说它只是肖像。然而,答案还是一样的。

于 2013-04-30T18:34:37.127 回答