在项目摘要中,“支持的界面方向”全部被选中,因为我的应用程序中有一个照片库视图,可以随设备一起旋转。其他观点仅限于肖像。目标设备是iPhone,所有东西在iPhone中都表现良好。但是当它在我的iPad上运行横向模式时,启动和rootView如下:
防溅景观:
rootview景观:
我期望的外观应与iPad处于纵向模式相同:
飞溅画像:
rootview画像:
rootView是MyNavigationController
,一些相关代码如下:
MyNavigationController.m
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}
- (BOOL)shouldAutorotate {
return NO;
}
答案 0 :(得分:9)
请使用以下代码更正您的代码:
- (BOOL)shouldAutorotate {
return YES;
}
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}
从YES
返回shouldAutorotate
似乎很奇怪。事实是,如果您确实返回NO
,则根本不会调用supportedInterfaceOrientations
,您的项目设置将会生效。您也可以删除shouldAutorotate
,它应该可以正常工作。
当用户更改设备方向时,系统会在根视图控制器或填充窗口的最顶层显示的视图控制器上调用此方法。如果视图控制器支持新方向,则窗口和视图控制器将旋转到新方向。 仅当视图控制器的shouldAutorotate方法返回YES时才调用此方法。
答案 1 :(得分:2)
您的意思是通过显示横向启动屏幕然后在应用程序中仍使用纵向模式吗?
据我所知,仅限iPhone的应用程序无法在横向模式下启动,这意味着为仅限iPhone的应用程序提供横向启动屏幕是没用的。
在“提供特定于设备的启动图像”部分检查文档here。
答案 2 :(得分:2)
我想你想要的是让状态栏也是肖像。遗憾的是,没有简单的方法 - 您可以将设备/界面方向设置为仅仅protrait,但它适用于整个应用程序。您需要自己处理所有视图的方向。因此,我建议您按照Hide status bar on launch image,隐藏状态栏,并在两个方向使用相同的图像。它会使启动画面看起来更好。