Читать схему цветов в SwiftUI?

#ios #swift #swiftui

#iOS #быстрый #свифтуи

Вопрос:

Я новичок в SwiftUI, и я хочу сохранить colorScheme в @State оболочку, но это не работает, оно обновляет неправильное значение @State , как я должен решить эту проблему?

Мой код:

 import SwiftUI

struct ContentView: View {
    
    @Environment(.colorScheme) var colorScheme: ColorScheme
    
    @State private var color: String = String()
    
    var body: some View {

        
        Text(color)
            .onAppear() {
                
                if      (colorScheme == .light) {
                    color = "light"
                    
                }
                else {
                    color = "dark"
                    
                }
                
            }
            .onChange(of: colorScheme) { _ in

                if      (colorScheme == .light) {
                    color = "light"
                    
                }
                else {
                    color = "dark"
                    
                }

            }
        
    }
}
 

Ответ №1:

.onChange — это, по сути, набор желаний. Значение меняется, но оно еще не изменилось. Если вы измените его на:

     .onChange(of: colorScheme) { newValue in
        if      (newValue == .light) {
            color = "light"
        }
        else {
            color = "dark"
        }
    }
 

это будет работать. Протестировано Xcode 12.2, iOS 14.2.