在我的SwiftUI应用程序中,我使用Mapbox,有两个样式的URL:一个用于浅色模式,一个用于深色模式。
现在,我正在使用下面的代码切换常量文件中的样式URL,只有当我执行新的应用程序构建时,该文件才有效。。。
let MAPBOX_STYLE_URL : String = {
if UITraitCollection.current.userInterfaceStyle == .dark {
return "mapbox://styles/customDarkModeUrl"
}
else {
return "mapbox://styles/customLightModeUrl"
}
}()
每次设备切换到暗模式时,我在哪里可以让应用程序调整样式URL?
我可以把这个代码放在SceneDelegate的willEnterForeGround或DidBomeActive中吗??我不确定如何执行此样式的url更新?
谢谢!
您只需要在视图中监控您的环境配色方案:
struct ContentView: View {
@Environment(.colorScheme) var colorScheme
var mapboxStyleURL: String {
"mapbox://styles/custom" + (colorScheme == .dark ? "Dark" : "Light") + "ModeUrl"
}
var body: some View {
Text(mapboxStyleURL)
}
}