在我的app设置中,用户可以选择三种系统主题:浅色、深色或默认(与手机的主题相匹配)。
我通过找到keyWindow
并将overrideUserInterfaceStyle = .dark
设置为暗模式,overrideUserInterfaceStyle = .light
设置为亮模式,overrideUserInterfaceStyle = .unspecified
设置为默认模式来做到这一点。
问题是我在我的应用程序中使用MapBox,我有一个darkStyleURL和一个lightStyleURL。当用户选择一个主题时,我更新样式url如下:
self.styleURL = self.traitCollection.userInterfaceStyle == .dark ? URL(string: darkStyleURL) : URL(string: lightStyleURL)
traitCollection.userInterfaceStyle
将等于.unspecified
。因此,当上面的代码触发时,它将使用lightStyleURL,即使用户的设备处于黑暗模式。
所以我的问题是,设置overrideUserInterfaceStyle = .unspecified
后,是否有另一种方法来确定用户的设备主题?
或者是否有更好的方法来处理匹配设备主题或在所有三个选项之间切换的用例?任何帮助都将不胜感激。谢谢!
您可以使用UIScreen.main.traitCollection.userInterfaceStyle
获得独立于窗口上覆盖的外观的当前设备主题。