获取有关明暗模式主题更改的更新

时间:2019-11-21 15:24:07

标签: swift sprite-kit swiftui

我有一个SwiftUI应用程序,其中有一个SpriteKit场景。但是,当在明暗模式之间切换时,场景背景在重新打开应用程序之前不会改变颜色

这不是理想的,所以我想在改变明暗模式外观时进行注册。我资产中的颜色具有“任意”和“深色”外观。

  

updateUIView()结构内UIViewRepresentable中的代码,该代码在与SwiftUI链接时设置了场景:

scene.backgroundColor = UIColor(named: "Color.Scene")!
uiView.presentScene(scene)

我该如何实现?我正在使用iOS 13的系统范围内的黑暗模式,所以我不想要Notification Center的解决方案,因为我要做的只是根据系统设置更新背景。

1 个答案:

答案 0 :(得分:0)

您可以在视图中使用@Environment (\.colorScheme) var colorScheme: ColorScheme,并使视图body对此做出反应:

struct ContentView: View {
    @Environment (\.colorScheme) var colorScheme: ColorScheme

    var body: some View {
        HStack {
            if self.colorScheme == .light { 
                // draw for light mode
            } else { 
                // draw for dark mode
            }
        }
    }
}