【问题标题】:iOS - unexpected rotation back to portrait on segueiOS - 在segue上意外旋转回纵向
【发布时间】:2016-03-28 21:58:52
【问题描述】:

第一次发帖,如果我在我的问题中没有提供正确的信息,请原谅我......

我正在创建一个应用程序(在 swift 中),我想支持所有屏幕的所有屏幕方向(并已在 Xcode 常规选项卡中相应地设置)。有一个登录/启动屏幕,然后应用程序其余部分的根控制器是 UINavigationController。

我的问题 - 即使设备处于横向,屏幕在任何 segue 上都会继续旋转回纵向,并且屏幕都支持横向! 这是 segue 的标准行为吗?如果是这样,我可以以某种方式阻止它吗? 需要明确的是 - 我只是希望屏幕旋转在 segue 之后继续反映设备方向 - 目前所有屏幕都支持所有方向。

我尝试设置 shouldAutorotate 为给定的屏幕/视图控制器返回 false,并扩展 UINavigationController 以引用可见视图控制器的 shouldautorotate() 函数,如下所示:

extension UINavigationController {
    public override func shouldAutorotate() -> Bool {
        return visibleViewController!.shouldAutorotate()
    }
}

这可以防止旋转离开 segue 上的(横向)设备方向,但是当然如果用户旋转回纵向屏幕仍然是横向的...

看起来这应该很简单,但我找不到任何信息或其他问题,只是关于限制允许方向的问题(我只希望屏幕方向始终反映设备方向).. .

一个想法 - 有没有办法检测是否在 segue 之后调用了 shouldAutorotate 函数?在这种情况下返回 false,否则返回 true?

任何帮助将不胜感激!

谢谢

【问题讨论】:

    标签: ios swift segue


    【解决方案1】:

    将这两种方法添加到您的视图控制器中:

    override func shouldAutorotate() -> Bool {
        return false
    }
    
    
    override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
        return UIInterfaceOrientationMask.Portrait
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多