我正在尝试为具有常规水平尺寸等级的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,屏幕大小等.
最佳答案
override var supportedInterfaceOrientations:UIInterfaceOrientationMask{
return [.portrait, .landscapeLeft, .landscapeRight]
}
override var shouldAutorotate:Bool {
return (traitCollection.horizontalSizeClass == .regular) || (traitCollection.displayScale > 2);
}