我正在尝试为具有常规水平尺寸等级的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)
}
但是,如果在界面旋转之前显然已经调用了anutororate,那么在traitCollection更新之前就会发生这种情况。
那么,问题是,如何实现这一目标?我试图以最干净的方式实现这一点,而无需明确引用userInterfaceIdiom,屏幕大小等。
答案 0 :(得分:2)
override var supportedInterfaceOrientations:UIInterfaceOrientationMask{
return [.portrait, .landscapeLeft, .landscapeRight]
}
override var shouldAutorotate:Bool {
return (traitCollection.horizontalSizeClass == .regular) || (traitCollection.displayScale > 2);
}