iOS - 意外旋转回到segue上的肖像

时间:2016-03-28 21:58:53

标签: ios swift segue

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

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

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

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

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

这可以防止旋转远离segue上的(风景)设备方向,但当然如果用户旋转回到肖像,屏幕仍保持风景......

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

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

感谢任何帮助!

由于

1 个答案:

答案 0 :(得分:0)

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

override func shouldAutorotate() -> Bool {
    return false
}


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