【问题标题】:Make landscape the only autorotate orientation for all view controllers at once使横向成为所有视图控制器的唯一自动旋转方向
【发布时间】:2011-11-30 19:44:22
【问题描述】:

我知道我必须添加这个

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}

到视图控制器,以便在横向模式下使特定的屏幕锁定,但是我必须为每个视图控制器执行此操作吗?有没有办法只做一个适用于所有视图控制器的主锁?

【问题讨论】:

  • 如果你有一个包含一堆子视图/视图控制器的主视图控制器,那么你应该能够在那里完成它,它将影响所有的子视图。跨度>
  • 我实际上没有那个,虽然我希望我有,但我只是通过 navController 推动 viewControllers :/
  • UINavigationController 扩展了 UIViewController,因此,您应该扩展 UINavigationController 并按照 Abhi 的建议实现 shouldAutorotateToInterfaceOrientation:。然后将该类用于您的 navController。

标签: objective-c ios cocoa-touch uiviewcontroller device-orientation


【解决方案1】:

您可以创建自己的UIViewController 子类,它实现了-shouldAutorotateToInterfaceOrientation:

那么它的任何子类都将继承该行为。

【讨论】:

  • 也许你的意思是 UIViewController?
  • 为什么我将设备支持的方向设置为两种横向模式,但仍然允许纵向运行?
  • 锁定整个应用程序的方向通常不是一个好主意,也许它里面有一个视图(例如:拍照,或嵌入式网络浏览器)你确实希望用户在其中能够自动旋转。因此方向锁定通常特定于单个视图。
  • 它是一款游戏,而且图形在纵向模式下确实无法正常工作
  • 我只是不明白为什么- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { // Return YES for supported orientations return YES; } 没有读到我唯一支持的两个方向都是风景而不是肖像
【解决方案2】:

既然你提到它是一款游戏,那么我同意将它真正应用于整个应用程序是一个好主意。

如果您在项目导航器中单击您的项目,然后选择您的目标,然后在“摘要”选项卡中列出所有四个方向,您可以只启用您想要的方向。

对于非游戏应用,我不建议这样做,因为某处可能有一个视图需要另一个方向。

【讨论】:

  • 就是这样,我只选择了横向左侧和横向右侧,就像我在支持方向下的 .plist 中一样,但是当我将其翻转为纵向时它仍然会调整......想法?
  • 那么也许你需要两者都做,我不确定。
猜你喜欢
  • 2011-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-12
相关资源
最近更新 更多