如何在设备切换 light/dark 模式时更改 Mapbox 样式 URL?

How can I change Mapbox style URL when device switches light/dark mode?

在我的 SwiftUI 应用程序中,我使用的是 Mapbox 并且有两种样式 URL:一种用于亮模式,一种用于暗模式。

现在我正在使用下面的代码在我的常量文件中切换样式 URL,这只有在我重新构建应用程序时才有效...

let MAPBOX_STYLE_URL : String = {
    if UITraitCollection.current.userInterfaceStyle == .dark {
        return "mapbox://styles/customDarkModeUrl" 
    }
    else {
       return "mapbox://styles/customLightModeUrl" 
    }
}()

每次设备切换到深色模式时,在哪里可以让应用程序适应样式URL?

我可以把这段代码放在 SceneDeletegate 的 willEnterForeGround 或 didBecomeActive 中吗?我不确定如何执行此样式 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)
    }
}