横向方向在iOS6中不起作用

时间:2013-09-02 09:56:41

标签: ios6 orientation

我正在开发一款始终以横向模式显示的iPad应用程序。 在iOS5中,我使用'shouldAutorotateToInterfaceOrientation'将值返回为'YES',并且我还配置了info.plist以仅支持横向模式。一切顺利。

在iOS 6中,我知道不推荐使用'shouldAutorotateToInterfaceOrientation'方法。我在网上进行了很多讨论并尝试了所有建议的解决方案,但结果仍为零(意思是,iOS6模拟器以纵向模式显示。

我的代码如下......任何建议都非常感谢...

在AppDelicate.m

MyTestUI *myTest = [[MyTestUI alloc] init];

navigationController = [[UINavigationController alloc] initWithRootViewController:myTest];

[navigationController setNavigationBarHidden:YES];

[self.window addSubview:navigationController.view];

[self.window makeKeyAndVisible];

[myTest release];
   return YES;
MyTestUI.m

中的

- (BOOL)shouldAutorotate {

   UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];

   if (orientation == UIInterfaceOrientationPortrait) {


   }

   return YES;
}


 **// iOS 5.1 Fix is below**

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return YES;

}

3 个答案:

答案 0 :(得分:1)

AppDelegate.m

而不是

[self.window addSubview:navigationController.view];

使用这个:

[self.window setRootViewController:navigationController];

希望这有帮助。

答案 1 :(得分:0)

如果您希望自己的应用始终处于横向状态,只需在xcode的摘要中选择横向 您的应用现已锁定为横向

enter image description here

答案 2 :(得分:0)

好的,iOS 6的定位从上到下进行处理:

  • XCode摘要中支持的方向:如果您的所有屏幕都支持相同的方向,那么只需使用此方法,因为它是最简单的。

  • 如果您根据应用程序的屏幕处理不同的方向规则,那么您希望对每个shouldAutorotate使用supportedInterfaceOrientationUIViewController方法。 (但要注意UINavigationController方向不依赖于它的顶级viewController - 而不是你可能期望的那样,所以你可能必须继承UINavigationController来正确处理它:

MytestUI

- (BOOL)shouldAutorotate
{
    return YES;
}


- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait;
}

并在您的UINavigationController子类

- (BOOL)shouldAutorotate
{
    return [self.topViewController shouldAutorotate];
}

- (NSUInteger)supportedInterfaceOrientations
{
    return [self.topViewController supportedInterfaceOrientations];
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    return [self.topViewController preferredInterfaceOrientationForPresentation];
}