如何在设备切换 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)
}
}
在我的 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)
}
}