我能够使用任何视图或ViewController的TraitCollection获取userInterfaceStyle。黑暗或光明。但是,当我强制应用程序使用“暗”或“亮”模式时,那么我想知道与设备无关的iOS设备当前的userInterfaceStyle是什么?
我尝试了UIScreen的Traitcollection,但仍提供应用程序的userInterfaceStyle而不是设备。
答案 0 :(得分:7)
尝试UIScreen.main
,举5个例子:
// OS-wide theme available on iOS 13.
@available(iOS 13.0, *)
var osTheme: UIUserInterfaceStyle {
return UIScreen.main.traitCollection.userInterfaceStyle
}
答案 1 :(得分:0)
如果您有多个ViewController或Windows,并且希望界面样式是动态的(或者像您所使用的情况一样,则锁定了),我会争辩说使用traitCollectionDidChange(_:)回调并查看属性{ {1}}。这将反映界面样式的当前状态(即使已锁定)。请记住,子视图控制器将继承其父视图的设置。
这样,您可以将代码设计为正确运行,具体取决于当前从->转换为的界面样式。以下示例将在自定义UIViewControllers和自定义UIViews中工作。
示例(Swift 4):
userInterfaceStyle