我正在开发一款始终以横向模式显示的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;
}
答案 0 :(得分:1)
在 AppDelegate.m
中而不是
[self.window addSubview:navigationController.view];
使用这个:
[self.window setRootViewController:navigationController];
希望这有帮助。
答案 1 :(得分:0)
如果您希望自己的应用始终处于横向状态,只需在xcode的摘要中选择横向 您的应用现已锁定为横向
答案 2 :(得分:0)
好的,iOS 6的定位从上到下进行处理:
XCode摘要中支持的方向:如果您的所有屏幕都支持相同的方向,那么只需使用此方法,因为它是最简单的。
如果您根据应用程序的屏幕处理不同的方向规则,那么您希望对每个shouldAutorotate
使用supportedInterfaceOrientation
和UIViewController
方法。 (但要注意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];
}