【问题标题】:iOS7 autorotating viewsiOS7 自动旋转视图
【发布时间】:2014-07-22 02:11:46
【问题描述】:

我的应用程序需要同时支持纵向和横向模式,但只有一个纵向视图。我在论坛上发现我必须继承 Navigation 控制器,然后使用 SupportedInterfaceOrientations 方法来处理它。

但是,我的应用有不同的布局,有一个标签栏控制器作为 rootview 控制器,然后每个标签栏控制器都有自己的导航控制器。我还在 rootview 控制器上显示了一个登录视图(用于在应用程序中进行身份验证)。现在的问题是我应该在哪里添加

- (BOOL)shouldAutorotate
{
   return NO;
}

- (NSUInteger)supportedInterfaceOrientations
{
   return UIInterfaceOrientationMaskPortrait;
}  

此代码 - 在 Navigation 控制器或 Tabbar 控制器或 AppDelegate 中。

【问题讨论】:

标签: ios7 autorotate


【解决方案1】:

除非视图是登录视图,否则您不应该在任何地方添加该代码。 iOS 7 不支持具有特殊方向的标签栏控制器或导航控制器的单个子级。

在 iOS 7 中,如果您将代码放在登录视图中,这将适用于登录视图,因为它是呈现视图控制器,并且呈现视图控制器支持此配置。

(在 iOS 8 中,因为它已经被播种到现在,它甚至对于登录视图也不起作用。)

【讨论】:

  • 只有纵向视图不是登录视图,它是来自 Tabbar 的视图。你的意思是我不能只在纵向模式下拥有一个标签栏项目,而在纵向和横向模式下都不能拥有其他标签栏项目。
  • 我是认真的。例如,请参阅我的回答:stackoverflow.com/a/15301322/341994 我对导航控制器的看法同样适用于标签栏控制器。您所描述的内容仅适用于 iOS 5 及更早版本。
  • 如果上述情况属实,如何创建仅限横向视图的应用程序。如果您在 Info.plist 中指定 Supported Device Orientation,那么无论它是标签栏、导航栏还是模型视图,它都应该应用于所有视图。
  • 没错。如果整个应用仅限于横向,则整个应用仅限于横向。但是如果一个视图会以纵向出现,你不能这样做:整个应用程序必须允许横向和纵向。在这种情况下,除了呈现的视图之外,没有其他视图可以强制旋转。请阅读我指出您的答案。并在此处查看我的完整解释:apeth.com/iOSBook/ch19.html#_rotation
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-13
  • 1970-01-01
相关资源
最近更新 更多