1

目前我在 iPhone 应用程序中只有纵向模式。我想在应用程序中允许一个控制器的横向模式,但不幸的是我无法使其工作。

我的 plist 文件中有这些设置:

<array>
    <string>UIInterfaceOrientationPortrait</string>
    <string>UIInterfaceOrientationLandscapeRight</string>
    <string>UIInterfaceOrientationLandscapeLeft</string>
</array>

我在我的控制器中实现了这些方法:

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskAllButUpsideDown;
}

-(BOOL)shouldAutorotate
{
   return YES;
}

我在应用程序中使用导航控制器,所以我意识到这可能是问题所在。我将其子类化UINavigationController并再次实现shouldAutorotateToInterfaceOrientationsupportedInterfaceOrientationsshouldAutorotate以与上述相同的方式。当然,我使用子类导航控制器来显示应该具有旋转能力的控制器。我也尝试按类别覆盖导航控制器的方法,但它也不起作用。

我从一开始就没有在应用程序上工作,我继承了代码。如果有可能如何在全球范围内限制景观,那可能就是我的情况。对于测试,我使用 iPhone 6.0 模拟器,但我的部署目标是 5.0。我感谢任何提示/帮助。

4

3 回答 3

2

iOS6 还要求您为窗口设置一个 rootViewController,而不是将控制器的视图添加为子视图。

如果你正在做这样的事情:

[window addSubview:someController.view];

那么您可以尝试将其更改为:

[window setRootViewController:someController];

也看看这个链接。对于 ios6,Apple 引入了这两种方法:

supportedInter
  1. 面对方向:
  2. 应该自转

希望能帮助到你。

舒迈斯·乌尔哈克

于 2013-02-05T12:50:58.210 回答
1

在你想要横向的控制器上试试这个

// override to allow orientations other than the default portrait orientation
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // return YES for supported orientations
    return UIInterfaceOrientationIsLandscape(interfaceOrientation); // support only landscape
}
于 2013-02-05T12:48:12.673 回答
0
  1. 转到目标窗口。
  2. 单击摘要选项卡。
  3. iPhone/iPad 部署信息 -> 根据您的要求为 iPhone 和 iPad 设置支持的界面方向。有关更多参考,请参见下图。

在此处输入图像描述

于 2013-02-05T12:43:45.373 回答