iOS-在segue上意外旋转回纵向

iOS-在segue上意外旋转回纵向,ios,swift,segue,Ios,Swift,Segue,第一次发帖,所以请原谅我在我的问题中没有给出正确的信息 我正在创建一个应用程序(在swift中),我希望支持所有屏幕的所有屏幕方向(并相应地在Xcode常规选项卡中设置)。有一个登录/启动屏幕,然后应用程序其余部分的根控制器是UINavigationController 我的问题-屏幕在任何一段上都会一直旋转回纵向,即使设备是横向的,而且屏幕都支持横向这是赛格上的标准行为吗?如果是这样,我能以某种方式阻止它吗? 要明确的是,我只希望屏幕旋转继续反映一段时间后的设备方向,并且当前所有屏幕都支持所有

第一次发帖,所以请原谅我在我的问题中没有给出正确的信息

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

我的问题-屏幕在任何一段上都会一直旋转回纵向,即使设备是横向的,而且屏幕都支持横向这是赛格上的标准行为吗?如果是这样,我能以某种方式阻止它吗? 要明确的是,我只希望屏幕旋转继续反映一段时间后的设备方向,并且当前所有屏幕都支持所有方向

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

extension UINavigationController {
    public override func shouldAutorotate() -> Bool {
        return visibleViewController!.shouldAutorotate()
    }
}
这可以防止旋转远离segue上的(横向)设备方向,但当然,如果用户旋转回纵向,屏幕仍保持横向

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

有一个想法-有没有一种方法可以检测在一个序列之后是否调用了shouldAutorotate函数?在本例中返回false,否则返回true

任何帮助都将受到感激

谢谢


Dan将以下两种方法添加到视图控制器中:

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


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

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

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


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