SwiftUI ile bir proje geliştiriyorsunuz ve bir komponenti veya bir öğeyi telefonun gece/gündüz moduna göre değişiklik göstermesini istiyorsunuz. Peki SwiftUI ile telefonun hangi modda olduğunu nasıl anlarız? Kısa bilgi köşemizde bugün buna bakıyor olacağız.
Environment’ı tanıyalım
Apple’ın kendi sitesinde bunu;
A property wrapper that reads a value from a view’s environment.
Apple Bey
olarak görüyoruz. Yani “Bir görünümün ortamından bir değer okuyan bir özellik sarmalayıcı.” demek istiyor. Peki bu ne anlama geliyor. Evironment ile takip edilebilir objeler yaratırız. Bu sayede istediğimiz yerden bu objelere erişir ve değerlerini okuyabiliriz. İşte tam olarak bu noktada SwiftUI bize “colorScheme” adında bir değişken tanımlamış. Bu değişkenin amacı ise telefonun hangi modda olduğunu döndürmek. Peki colorScheme nedir? Nasıl kullanılır?
colorScheme nedir ve nasıl kullanılır?
colorScheme renk düzenini tutan bir değişkendir. Takip edilebilir olarak atanmıştır. Bu sayede kodunuzun herhangi bir yerinde ona ulaşabilir ve kullanabilirsiniz.
Nasıl kullanılır kısmına gelecek olursak;
@Environment(\.colorScheme) var colorScheme: ColorScheme
şeklinde kullanılır. Bu kullanımı gelin birlikte inceleyelim.
var colorScheme: ColorScheme ile ColorScheme türünde bir değişken tanımladık ve adına da colorScheme dedik. Ardından @Environment(\.colorScheme) ile dinlenebilir nesneler arasından adı colorScheme olanı çağırdık ve tanımladığımız colorScheme değişkene atadık. Böylece değişkenimiz telefonun hangi modda olduğunu tutacak. Peki bu değişkenin tam değeri nedir? Öyle ya if-else kontrolü yapmamız gerekecek ama neye göre sorguyu yazacağız?
colorScheme değişkeninin değeri nedir?
colorScheme bir renk düzeni tutar demiştik. Burada tutulan şey aslında enum değeridir. Eğer kodun detayına giderseniz bunu görebileceksiniz.
Yani bu da şu anlama geliyor; biz sorgularda bunu kontrol ederken .dark veya .light gibi durumlar yazarak sorgumuzu tamamlayabiliriz. Hadi bir örnek yapalım;
colorScheme == .dark ? Color.black : Color.white
Bu örnekte göreceğiniz satır içi sorgusu colorScheme olarak tanımladığımız nesnenin değerinin .dark olup olmadığını kontrol ediyor. Eğer değeri .dark ise rengi Color.black olarak ayarlıyor. Fakat .light ise Color.white olarak ayarlıyor.
SwiftUI ile hazırlamış olduğum bootcamp serilerine ulaşmak için buraya tıklayın.