5

在项目摘要中,“支持的界面方向”都被选中,因为我的应用程序中有一个照片库视图,可以随设备旋转。其他视图仅为纵向。目标设备是 iPhone,所有的东西在 iPhone 中都表现良好。但是当它在我的 iPad 上以横向模式运行时,启动画面和 rootView 如下所示:

飞溅景观: 在此处输入图像描述

根视图景观: 在此处输入图像描述

我期望的外观应该与 iPad 的纵向模式相同:

飞溅肖像: 在此处输入图像描述

根视图肖像: 在此处输入图像描述

rootView 是MyNavigationController,相关代码如下:

我的导航控制器.m

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

- (NSUInteger)supportedInterfaceOrientations {
  return UIInterfaceOrientationMaskPortrait;
}

- (BOOL)shouldAutorotate {
  return NO;
}
4

3 回答 3

9

请使用以下内容更正您的代码:

- (BOOL)shouldAutorotate {
   return YES;
}

- (NSUInteger)supportedInterfaceOrientations {
   return UIInterfaceOrientationMaskPortrait;
}

YESshouldAutorotate. _ 事实是,如果您确实 return NO,则supportedInterfaceOrientations根本不会被调用,并且您的项目设置将成为规则。您也可以删除shouldAutorotate它,它应该可以正常工作。

参考

当用户更改设备方向时,系统会在根视图控制器或填充窗口的最顶部呈现的视图控制器上调用此方法。如果视图控制器支持新方向,则窗口和视图控制器将旋转到新方向。仅当视图控制器的 shouldAutorotate 方法返回 YES 时才会调用此方法。

于 2013-03-07T20:30:31.820 回答
2

我想你想要的是将状态栏也设为纵向。不幸的是,没有简单的方法可以做到这一点——您可以将设备/界面方向设置为仅纵向,但它适用于整个应用程序。您需要自己处理所有视图的方向。所以,我建议你按照Hide status bar on launch image,隐藏你的状态栏,并在两个方向使用相同的图像。它将使启动画面看起来更好。

于 2013-03-07T17:13:12.093 回答
2

您的意思是显示横向启动屏幕然后在应用程序中仍然使用纵向模式吗?

据我所知,仅限 iPhone 的应用程序无法以横向模式启动,这意味着为仅限 iPhone 的应用程序提供横向启动屏幕是没有用的。

“提供特定于设备的启动映像”部分查看文档。

于 2013-03-01T08:54:11.837 回答