iOS - 在segue上意外旋转回纵向
Posted
技术标签:
【中文标题】iOS - 在segue上意外旋转回纵向【英文标题】:iOS - unexpected rotation back to portrait on 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?
任何帮助将不胜感激!
谢谢
丹
【问题讨论】:
【参考方案1】:将这两种方法添加到您的视图控制器中:
override func shouldAutorotate() -> Bool
return false
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask
return UIInterfaceOrientationMask.Portrait
【讨论】:
以上是关于iOS - 在segue上意外旋转回纵向的主要内容,如果未能解决你的问题,请参考以下文章
Swift 致命错误:在 segue 上展开 Optional 值时意外发现 nil
在 ios6 和 ios7 的 MPMoviePlayerViewController 中将横向旋转为纵向