【问题标题】:iOS >> Device Orientation >> Screen is Not Supporting Upside DowniOS >> 设备方向 >> 屏幕不支持倒置
【发布时间】:2013-11-21 14:02:37
【问题描述】:

我有一个支持设备方向的屏幕。

一切正常,除了当我将设备倒置旋转时(顶部的主页按钮),旋转不起作用(卡在最后的横向设置上)。

我知道有几个地方需要更新以支持此功能:

  • 在 VC 本身中,我添加了方法:

  • 在项目目标中,我更新如下:

  • 在 Storyboard VC 场景中,我更新如下:

我在这里错过了什么?

【问题讨论】:

标签: ios device-orientation


【解决方案1】:

您还必须允许在当前主视图控制器的每个父视图控制器中旋转到所有方向。例如,如果您的视图控制器在导航控制器中,请尝试对其进行子类化并覆盖与示例中相同的方法。

编辑:正如@JordanC 提到的,从iOS 7 开始,您可以实现UINavigationControllerDelegate 方法来返回自定义支持的方向:

- (UIInterfaceOrientationMask)navigationControllerSupportedInterfaceOrientations:(UINavigationController *)navigationController

【讨论】:

  • 是的,我猜这只是 iPhone 上的 Upside Down 需要,因为默认情况下 Navigation Controller 不支持。
  • 顺便说一句,所以如果我在导航堆栈上有几个 VC,并且我希望第一个不能旋转(而后面的那些是)-似乎一旦我将 UINavigationController 子类化并设置它是可旋转的,我不能将其子 VC 设置为不接受旋转。有什么想法吗?
  • @OhadRegev 我认为这不可能。尝试覆盖导航控制器的supportedInterfaceOrientations 以返回其topViewController 支持的方向。但是,这不会阻止以非法方向弹出到第一个视图控制器。我看到的唯一解决方案是在以前的 VC 不支持当前方向时禁用“返回”按钮。
  • 如果存在 UITabBarController,请注意,您还必须继承并覆盖该类的 - (UIInterfaceOrientationMask) supportedInterfaceOrientations {} 方法(除了 UINavigationController)。
  • 您不再需要子类化导航控制器。您可以将您的 VC 设置为委托并实现 - (UIInterfaceOrientationMask)navigationControllerSupportedInterfaceOrientations:(UINavigationController *)navigationController
【解决方案2】:

正如@eGanges 所提到的,如果那是您的初始视图控制器,那么关键点可能是将您的UITabBarController 子类化(并覆盖supportedInterfaceOrientations),在这种情况下,这是您应该子类化的唯一控制器(当然您应该将所有支持的界面方向添加到您的应用 Info.plist 文件中UISupportedInterfaceOrientations 键)

【讨论】:

    【解决方案3】:

    你在真机上测试过吗?

    无论如何试试这个:

    - (NSUInteger)supportedInterfaceOrientations {
        return (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown);
    }
    

    【讨论】:

    • UIInterfaceOrientationMaskAll 发布的内容也将涵盖这些内容。
    • 嗯,我在真机上测试过,也有同样的问题。另外,我已经尝试了您的建议(使用 | 运算符),但这里也没有好处......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-25
    相关资源
    最近更新 更多