【问题标题】:Support landscape orientation for horizontalSizeClass=.Regular in iOS在iOS中支持horizo​​ntalSizeClass=.Regular的横向
【发布时间】:2016-03-30 09:06:29
【问题描述】:

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

}

然而,shouldAutororate 显然是在界面旋转之前调用的,所以这发生在 traitCollection 更新之前。

那么,问题是,如何做到这一点?我正在尝试以最简洁的方式完成此操作,而无需明确引用 userInterfaceIdiom、屏幕尺寸等。

【问题讨论】:

  • 您找到解决方案了吗?我也对这个感兴趣!

标签: ios swift uikit


【解决方案1】:
override var supportedInterfaceOrientations:UIInterfaceOrientationMask{

    return [.portrait, .landscapeLeft, .landscapeRight]

}

override var shouldAutorotate:Bool {

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

}

【讨论】:

  • 不错的解决方案!我的第一个想法是“但是traitCollection 还没有更新......”,但是纵向的traitCollectiondisplayScale 相结合确实为我们提供了我们需要的信息!
猜你喜欢
  • 1970-01-01
  • 2015-01-01
  • 2013-03-10
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多