在iOS中支持horizo​​ntalSizeClass = .Regular的横向方向

我正在尝试为具有常规水平尺寸等级的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);

}
点赞