Published on

SwiftUI-da Badge β€” TabView va List uchun belgilar

Authors

Hammaga xush kelibsiz! Mening ismim Nick, bu β€” Swiftful Thinking kanali.

Bu videoda badge β€” bildirishnoma belgisini qo'shishni o'rganamiz. Bu iOS 15 da SwiftUI-ga qo'shildi. UIKit-da allaqachon mavjud edi, lekin SwiftUI-ga kech qo'shildi.

Badge ikkita joyda ishlaydi:

  • TabView β€” tab-dagi bildirishnomalar soni
  • List β€” ro'yxat qatorida qo'shimcha matn

Yangi fayl yaratish

Navigatorda o'ng tugma bosib yangi SwiftUI fayli yarating. Uni BadgesBootcamp deb nomlang va Create tugmasini bosing. Canvas-da Resume bosing.


1. TabView-da badge

struct BadgesBootcamp: View {
    var body: some View {
        TabView {
            Color.red
                .tabItem {
                    Image(systemName: "heart.fill")
                    Text("Sevimlilar")
                }
                .badge(5)

            Color.green
                .tabItem {
                    Image(systemName: "message.fill")
                    Text("Xabarlar")
                }
                .badge(12)

            Color.blue
                .tabItem {
                    Image(systemName: "person.fill")
                    Text("Profil")
                }
                .badge(0)
        }
    }
}

Eslatma: badge(0) bo'lganda badge umuman ko'rinmaydi β€” bu juda qulay, chunki 0 ta bildirishnoma bo'lganda belgi ko'rsatmaslik kerak.

Matn bilan badge

Son o'rniga matn ham berish mumkin:

Color.red
    .tabItem {
        Image(systemName: "bell.fill")
        Text("Yangiliklar")
    }
    .badge("Yangi")

2. List-da badge

List-dagi badge TabView-dagi kabi qizil doira emas β€” balki qator o'ng tomonida ikkilamchi rangda matn ko'rinishida chiqadi:

struct BadgesBootcamp: View {
    var body: some View {
        List {
            Text("Kiruvchi xabarlar")
                .badge(3)

            Text("Yuborilganlar")
                .badge(0)

            Text("Qoralamalar")
                .badge("Yangi")
        }
    }
}

badge(0) List-da ham ko'rinmaydi.


Badge-ni dinamik yangilash

Badge odatda @State o'zgaruvchisi bilan ishlatiladi β€” bildirishnomalar soni o'zgarganda badge avtomatik yangilanadi:

struct BadgesBootcamp: View {

    @State var messageCount: Int = 5

    var body: some View {
        TabView {
            VStack {
                Text("Xabarlar: \(messageCount)")
                Button("O'qildi") {
                    messageCount = 0
                }
            }
            .tabItem {
                Image(systemName: "message.fill")
                Text("Xabarlar")
            }
            .badge(messageCount)
        }
    }
}

TabView va List β€” badge ko'rinishi farqi

JoyKo'rinishi
TabViewQizil doira ichida oq raqam (iOS standart stili)
ListQator o'ng tomonida ikkilamchi rangda matn

To'liq kod

struct BadgesBootcamp: View {

    @State var notifications: Int = 5

    var body: some View {
        TabView {
            // Badge son bilan
            List {
                Text("Kiruvchi xabarlar")
                    .badge(notifications)

                Text("Yuborilganlar")
                    .badge(0)

                Text("Qoralamalar")
                    .badge("Yangi")
            }
            .tabItem {
                Image(systemName: "tray.fill")
                Text("Pochta")
            }
            .badge(notifications)

            Color.green
                .tabItem {
                    Image(systemName: "person.fill")
                    Text("Profil")
                }

            Color.blue
                .tabItem {
                    Image(systemName: "gearshape.fill")
                    Text("Sozlamalar")
                }
        }
    }
}

Xulosa

Bu videoda o'rgandik:

  • .badge(Int) β€” son bilan badge qo'shish
  • .badge(String) β€” matn bilan badge qo'shish
  • badge(0) β€” badge ko'rinmaydi (son nol bo'lsa avtomatik yashiriladi)
  • TabView-da β€” qizil doira ichida son (iOS standart stili)
  • List-da β€” qator o'ng tomonida ikkilamchi rangda matn
  • Badge odatda @State o'zgaruvchisi bilan birgalikda ishlatiladi

Rahmat tomosha qilganingiz uchun! Men β€” Nick, bu Swiftful Thinking. Keyingi videoda ko'rishamiz!

Buy mea coffee