Published on

Qorong'u rejim va rang sxemalari

Authors

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

SintaksisVazifasi
.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.

Buy mea coffee