第一次发帖,如果我没有在我的问题中提供正确的信息,请原谅我...
我正在创建一个应用程序(快速),我想支持所有屏幕的所有屏幕方向(并相应地在 Xcode 常规选项卡中进行设置)。有一个登录/启动屏幕,然后应用其余部分的根 Controller 是一个 UINavigationController。
我的问题 - 即使设备处于横向,屏幕也会在任何 segue 上旋转回纵向,并且屏幕都支持横向! 这是 segue 的标准行为吗?如果是这样,我能以某种方式阻止它吗? 需要明确的是 - 我只希望屏幕旋转在 segue 之后继续反射(reflect)设备方向 - 目前所有屏幕都支持所有方向。
我已尝试将 shouldAutorotate 设置为给定屏幕/ View Controller 返回 false,并扩展 UINavigationController 以引用可见 View Controller 的 shouldautorotate() 函数,如下所示:
extension UINavigationController {
public override func shouldAutorotate() -> Bool {
return visibleViewController!.shouldAutorotate()
}
}
这可以防止在 segue 上旋转远离(横向)设备方向,但是当然如果用户旋转回纵向屏幕仍然是横向...
看起来这应该非常简单,但我找不到任何信息或其他问题,只是关于限制允许的方向的问题(我只希望屏幕方向始终反射(reflect)设备方向)。 .
一个想法 - 有没有办法检测是否在 segue 之后调用了 shouldAutorotate 函数?并在此实例中返回 false,否则返回 true?
如有任何帮助,我们将不胜感激!
谢谢
丹
最佳答案
将这两个方法添加到您的 View Controller 中:
override func shouldAutorotate() -> Bool {
return false
}
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
return UIInterfaceOrientationMask.Portrait
}
关于iOS - 在 segue 上意外旋转回纵向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36271944/