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

时间:2016-03-30 09:06:30

标签: ios swift uikit

我正在尝试为具有常规水平尺寸等级的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,屏幕大小等。

1 个答案:

答案 0 :(得分:2)

override var supportedInterfaceOrientations:UIInterfaceOrientationMask{

    return [.portrait, .landscapeLeft, .landscapeRight]

}

override var shouldAutorotate:Bool {

    return (traitCollection.horizontalSizeClass == .regular) || (traitCollection.displayScale > 2);

}