我正在尝试构建一个应用程序,支持具有常规水平尺寸类别的 iOS 设备的纵向和横向方向,而其余设备仅支持纵向。
在撰写本文时,将是:仅限纵向(适用于除 6 Plus/6s Plus 之外的 iPhone)以及适用于 iPhone 6 Plus / 6s Plus 和 iPad 的纵向和横向。
这是本机邮件应用程序执行的类似行为。
除其他外,我还尝试过以下操作:
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
return [.Portrait, .LandscapeLeft, .LandscapeRight]
}
override func shouldAutorotate() -> Bool {
return (traitCollection.horizontalSizeClass == .Regular)
}
Run Code Online (Sandbox Code Playgroud)
然而,shouldAutororate 显然是在界面旋转之前调用的,因此这发生在 TraitCollection 更新之前。
那么,问题是,如何实现这一目标?我试图以尽可能干净的方式完成此任务,而无需显式引用 userInterfaceIdiom、屏幕尺寸等。
override var supportedInterfaceOrientations:UIInterfaceOrientationMask{
return [.portrait, .landscapeLeft, .landscapeRight]
}
override var shouldAutorotate:Bool {
return (traitCollection.horizontalSizeClass == .regular) || (traitCollection.displayScale > 2);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
426 次 |
| 最近记录: |