Published on

SwiftfulUI: Vaqtingizni tejaydigan tayyor UI komponentlar

Authors

SwiftfulUI nima?

SwiftfulUI bu mening (Nick) o'zim yaratgan va ochiq kodli (open-source) qilib GitHub'ga joylagan paketim. Yillar davomida iOS ilovalarini yaratish jarayonida SwiftUI'da menga yetishmayotgan ba'zi qulayliklarni bitta kutubxonaga jamladim. Ushbu vositalar yordamida har kuni yoziladigan zerikarli va takrorlanuvchi kodlarni yozishdan qutulasiz.

1. Paketni o'rnatish

Paketni odatdagidek Xcode orqali qo'shamiz: https://GitHub.com/SwiftfulThinking/SwiftfulUI

Loyiha ichida esa quyidagicha chaqiramiz:

import SwiftfulUI

2. Eng foydali modifikatorlar

A) Orqa fon va chegaralar (Backgrounds & Borders)

Odatda tugmaga ham orqa fon rangi, ham chegara (border) va burchaklariga yumaloqlik (corner radius) berish uchun bir nechta qator kod yoziladi. SwiftfulUI bilan bu bitta qatorda hal bo'ladi:

Text("Kirish")
    .padding()
    .withBackgroundAndBorder(
        backgroundColor: .blue,
        borderColor: .red,
        borderWidth: 2,
        cornerRadius: 32
    )

B) asButton() – Tugmalarning yangi avlodi

Standart Button yozish ko'pincha noqulay va uning ustiga bosilganda animatsiyasi (opacity) juda oddiy. asButton() orqali xohlagan View'ni juda chiroyli (kichrayadigan) tugmaga aylantira olasiz:

Text("Bosing")
    .asButton(.press) {
        // Bosilganda nima sodir bo'lishi
        print("Tugma bosildi!")
    }

C) GeometryReader o'rniga readingFrame()

GeometryReader SwiftUI'dagi eng katta og'riqlardan biri hisoblanadi. Chunki uni qo'shganingiz zahoti View'ning o'lchamlari buzilib, butun ekranni egallab oladi.

Men buni hal qilish uchun .readingFrame() ni yaratdim. U orqa fonda jimgina elementning o'lchamlarini o'lchaydi va UI'ni aslo buzmaydi:

Text("O'lchamni o'qish")
    .readingFrame { frame in
        print("Kenglik: \(frame.width)")
    }

D) NonLazyVGrid va maxsus progress barlar

SwiftUI'ning o'zidagi LazyVGrid barcha ustunlarni (columns) bir xil hajmga majburlaydi. SwiftfulUI'dagi NonLazyVGrid yordamida har xil o'lchamdagi va chiroyli turuvchi katakchalarni yasash juda oson.

Shuningdek, tayyor Custom Progress Bar va Drag Gesture (surtish) animatsiyalari ham mavjud.

CustomProgressBar(
    selection: 25,
    range: 0...100,
    backgroundColor: .gray.opacity(0.3),
    foregroundColor: .blue
)

Xulosa

Agar siz iOS dasturchi sifatida ishlash tezligingizni oshirmoqchi bo'lsangiz, SwiftfulUI sizga juda asqotadi. U sizni har gal bitta ishni noldan yozish mashaqqatidan xalos etadi. Undagi yuzlab qo'shimcha imkoniyatlarni GitHub dagi hujjatlardan (Wiki) o'qib olishingiz mumkin.

Buy mea coffee