- Published on
Qorong'u rejim va rang sxemalari
- Authors
- Name
- ShoxruxC
- @iOSdasturchi
iOS 13 dan beri har bir iPhone da qorong'u rejim bor. Foydalanuvchilar uni ishlatadi va ilovangiz to'g'ri ko'rinishini kutadi. Yaxshi xabar: SwiftUI ni to'g'ri ishlatilsa ko'p ish bepul bajariladi.
Asosiy qoida: Hardcoded rang ishlatmang. .primary, .secondary, .background, .regularMaterial va tizim ranglari β bularning hammasi avtomatik moslashadi.
import SwiftUI
struct AdaptivKartaKorinishi: View {
// Joriy rang sxemasini o'qish β .light yoki .dark
@Environment(\.colorScheme) var colorScheme
var body: some View {
VStack(alignment: .leading, spacing: 12) {
// .primary β yorug'da qora, qorong'uda oq
Text("Sarlavha")
.font(.headline)
.foregroundStyle(.primary)
// .secondary β biroz shaffof, ikkinchi darajali matn uchun
Text("Ikkinchi darajali matn")
.font(.subheadline)
.foregroundStyle(.secondary)
// Tizim aksent rangi β iOS sozlamalarida o'rnatilgan
Text("Aksent")
.foregroundStyle(.accent)
// Faqat kerak bo'lganda qo'lda tekshirish
if colorScheme == .dark {
Text("Qorong'u rejim aktiv")
.font(.caption)
.foregroundStyle(.yellow)
}
}
.padding()
// regularMaterial β avtomatik moslashuvchi muzli shisha
.background(.regularMaterial)
.clipShape(RoundedRectangle(cornerRadius: 16))
.padding()
}
}
Material orqa fonlar
// Qalinlik darajalari β yuqoridan pastga: ko'proq shaffof
.background(.ultraThinMaterial) // Eng ingichka, eng shaffof
.background(.thinMaterial) // Yupqa
.background(.regularMaterial) // Standart β ko'p holat uchun
.background(.thickMaterial) // Qalin
.background(.ultraThickMaterial) // Eng qalin, eng kam shaffof
Adaptiv ranglar
// Assets.xcassets da "BrandRed" rangini yarating
// Any Appearance: #FF3B30
// Dark: #FF6B5B β qorong'u rejim uchun yorqinroq
// Kodda bir xil ishlatiladi β tizim avtomatik tanlaydi
Text("Brend rangi")
.foregroundStyle(Color("BrandRed"))
.preferredColorScheme
struct SozlamalarKorinishi: View {
@AppStorage("isDarkMode") var isDarkMode = false
var body: some View {
Toggle("Qorong'u rejim", isOn: $isDarkMode)
.padding()
// Bu ko'rinish va barcha pastki viewlarga qo'llanadi
.preferredColorScheme(isDarkMode ? .dark : .light)
}
}
// Preview da sinovdan o'tkazish
#Preview("Qorong'u rejim") {
AdaptivKartaKorinishi()
.preferredColorScheme(.dark)
}
#Preview("Yorug' rejim") {
AdaptivKartaKorinishi()
.preferredColorScheme(.light)
}
Tezkor ma'lumotnoma
| Sintaksis | Vazifasi |
|---|---|
.foregroundStyle(.primary) | Yorug'da qora, qorong'uda oq |
.foregroundStyle(.secondary) | Shaffofroq ikkinchi darajali matn |
.background(.regularMaterial) | Avtomatik moslashuvchi muzli shisha |
Color("NomlanganRang") | Assets.xcassets dan adaptiv rang |
@Environment(\.colorScheme) | Joriy rejimni o'qish β .light / .dark |
.preferredColorScheme(.dark) | Ko'rinish uchun rejimni majburlash |
π― Topshiriq: qorong'u/yorug' rejim
Bitta VStack yarating: sarlavha, tavsif matni, tugma. Barcha ranglar uchun tizim ranglarini ishlating β hardcoded qiymat yo'q. Xcode Preview da .preferredColorScheme(.dark) va .preferredColorScheme(.light) bilan ikkala rejimni tekshiring. Hamma narsa chiroyli ko'rinishi kerak.