当设备切换亮/暗模式时,如何更改Mapbox样式的URL



在我的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)
}
}

最新更新