我有一个SwiftUI应用程序,其中有一个SpriteKit场景。但是,当在明暗模式之间切换时,场景背景在重新打开应用程序之前不会改变颜色。
这不是理想的,所以我想在改变明暗模式外观时进行注册。我资产中的颜色具有“任意”和“深色”外观。
updateUIView()
结构内UIViewRepresentable
中的代码,该代码在与SwiftUI链接时设置了场景:
scene.backgroundColor = UIColor(named: "Color.Scene")!
uiView.presentScene(scene)
我该如何实现?我正在使用iOS 13的系统范围内的黑暗模式,所以我不想要Notification Center的解决方案,因为我要做的只是根据系统设置更新背景。
答案 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
}
}
}
}