Tenho um projeto básico lendo a variável de ambiente para ColorScheme. O que notei é que, como meu aplicativo está no modo claro, quando coloco o aplicativo em segundo plano, o esquema de cores sempre alterna entre escuro e claro, mesmo que eu nunca altere o modo de cor.
struct ContentView: View {
@SwiftUI.Environment(\.colorScheme) var colorScheme
var body: some View {
VStack {
let _ = Self._printChanges()
let _ = print("====== colorscheme \(colorScheme)")
Image(systemName: "globe")
.imageScale(.large)
.foregroundStyle(.tint)
Text("Hello, world!")
}
.padding()
}
}
quando coloco o aplicativo em segundo plano ele imprime
ContentView: _colorScheme changed.
====== colorscheme dark
ContentView: _colorScheme changed.
====== colorscheme light
Alguém notou esse problema? Isso é um bug ou design? E como impedir que isso aconteça?
Isso está correto e é por design. Quando seu aplicativo move para o segundo plano, o iOS precisa salvar uma imagem de tela para uso no alternador de aplicativos.
Como o dispositivo pode alternar entre o modo claro/escuro enquanto o aplicativo está em segundo plano, ele captura duas imagens da tela: uma no modo claro e outra no modo escuro.
O iOS então usa a imagem apropriada no alternador, dependendo do esquema atual.
Você não pode evitar que isso aconteça.