İçeriğe geç

SwiftUI ViewModifier ile colorScheme düzenlemek

Merhabalar bu yazımda SwiftUI ile birlikte uygulamalarımızda dark ve light tema için elementlere renk ayarlamamızı kolaylaştıracak bir kısa yol paylaşacağım.

SwiftUI ile kullanarak nesnelere doğrudan özellik ekleyebildiğimiz ViewModifier yardımı ile basit bir extension fonksiyonu kullanarak renk ayarlama işlemini kolaylaştıracağız. Dilerseniz sizde bu yöntem ile farklı nesnelere farklı özellikler kazandırabilirsiniz.

struct ContentView: View {
        
    var body: some View {
        Text("Hello, world!")
            .foregroundColor(light: .black, dark: .white)
    }
}
struct AdaptiveForegroundModifier: ViewModifier {
    
    @Environment(\.colorScheme) private var colorScheme
    
    var lightColor: Color
    var darkColor: Color
    
    func body(content: Content) -> some View {
        content.foregroundColor(resultColor)
    }
    
    private var resultColor: Color {
        switch colorScheme {
        case .light: return lightColor
        case .dark: return darkColor
        @unknown default: return lightColor
        }
    }
}
extension View {
    func foregroundColor(light: Color, dark: Color) -> some View {
        modifier(AdaptiveForegroundModifier(lightColor: light, darkColor: dark))
    }
}

 

Tarih:SwiftUI

İlk Yorumu Siz Yapın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Copyright © 2021 Kenan Atmaca