如何以编程方式检查ios设备的当前userInterfaceStyle?

Rau*_*mar 3 ios swift ios13 ios-darkmode

我可以使用任何视图或ViewController的TraitCollection获取userInterfaceStyle。黑暗或光明。但是,当我强制应用程序使用暗或亮模式时,那么我想知道iOS设备与应用程序无关的当前userInterfaceStyle是什么?

我尝试了UIScreen的Traitcollection,但仍提供应用程序的userInterfaceStyle而不是设备。

Ham*_*ead 7

试试看UIScreen.main,迅捷的5个例子:

// OS-wide theme available on iOS 13.
@available(iOS 13.0, *)
var osTheme: UIUserInterfaceStyle {
    return UIScreen.main.traitCollection.userInterfaceStyle
}
Run Code Online (Sandbox Code Playgroud)

  • 它用于检测应用程序级别的 userInterfaceStyle 。但是,当您强制您的应用程序显示特定模式时,即。仅深色或浅色模式。那么它无法检测设备的界面样式。我也提到了这个解决方案本身 (2认同)
  • 据我所知,在 info.plist 中设置 `UIUserInterfaceStyle` 键意味着您决定完全选择退出深色主题,那么您为什么要关心操作系统深色主题是否打开?您是否试图根据您的应用程序设置来实现诸如使用深色主题之类的目标?如果是这样,就像我上面提到的,您可以设置关键窗口的 overrideUserInterfaceStyle 来覆盖应用程序范围的主题,并使用 uiscreen 的 TraitCollection 来检测操作系统范围的主题 (2认同)