iPhone应用程序横向模式不起作用

时间:2013-02-05 12:40:31

标签: iphone ios objective-c cocoa-touch

目前我在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。我感谢任何提示/帮助。

3 个答案:

答案 0 :(得分:2)

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

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

[window addSubview:someController.view];

然后您可以尝试将其更改为:

[window setRootViewController:someController];

另请查看此link。对于ios6,Apple引入了这两种方法:

supportedInter
  1. faceOrientations:
  2. shouldAutorotate
  3. 希望它有所帮助。

    Shumais Ul Haq

答案 1 :(得分: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
}

答案 2 :(得分:0)

  1. 转到目标窗口。
  2. 点击摘要标签。
  3. iPhone / iPad部署信息 - &gt;为iPhone和iPhone设置支持的界面方向。 iPad根据您的要求。有关更多参考,请参见下图。
  4. enter image description here