- Published on
Dynamic Type va foydalanuvchanlik
- Authors
- Name
- ShoxruxC
- @iOSdasturchi
iOS foydalanuvchilari Sozlamalarda o'zlariga mos matn o'lchamini tanlaydi. Ba'zilar ko'zlariga yordam uchun kattalashtiradi, boshqalar ekranda ko'proq kontent sig'dirish uchun kichraytiradi. Ilovangiz bu sozlamani hurmat qilishi kutiladi.
Yangi boshlovchilar tushadigan tuzoq β .font(.system(size: 16)) kabi qattiq o'lcham. Bu son hech qachon o'zgarmaydi.
Yechim: .font(.body), .font(.headline) kabi semantik matn uslublarini ishlating β tizim o'lchamni siz uchun boshqaradi.
| Qator | Vazifasi |
|---|---|
@ScaledMetric var avatarSize: CGFloat = 48 | Foydalanuvchi Dynamic Type sozlamasiga mutanosib o'lchamlangan xususiyat. Standart o'lchamda 48, eng katta accessibility o'lchamida 80+ bo'lishi mumkin. |
.font(.headline) | Semantik matn uslubi. SwiftUI Dynamic Type bilan birga o'lchamni avtomatik boshqaradi. |
.font(.subheadline) | Sana, sarlavhacha va ikkinchi darajali yorliqlar uchun mos kichikroq semantik uslub. |
HStack(alignment: .top) | Avatar va matnni tepadan hizalaydi. Katta matn o'lchamida matn bir necha qatorga o'tganda noto'g'ri ko'rinishning oldini oladi. |
Semantik matn uslublari
VStack(alignment: .leading, spacing: 8) {
Text("Katta sarlavha").font(.largeTitle) // Eng katta
Text("Sarlavha").font(.title)
Text("Sarlavha 2").font(.title2)
Text("Sarlavha 3").font(.title3)
Text("Sarlavha").font(.headline) // Ko'p joyda ishlatiladi
Text("Asosiy matn").font(.body) // Standart o'qish matni
Text("Qo'shimcha sarlavha").font(.subheadline)
Text("Izoh").font(.footnote)
Text("Yozuv").font(.caption) // Eng kichik
Text("Yozuv 2").font(.caption2)
}
@ScaledMetric variantlari
// Standart β barcha matn uslublari bilan mutanosib
@ScaledMetric var ikonkaO'lchami: CGFloat = 20
// Maxsus uslubga nisbatan β headline bilan mos ketadi
@ScaledMetric(relativeTo: .headline) var ikonkaO'lchami: CGFloat = 20
Image(systemName: "star.fill")
.frame(width: ikonkaO'lchami, height: ikonkaO'lchami)
.minimumScaleFactor β ehtiyotkorlik bilan
// Matn o'ramdan oldin 50% gacha kichrayishiga ruxsat beradi
// Faqat o'rash joylashuvni buladigan holda ishlating
Text("Navigatsiya sarlavhasi")
.font(.headline)
.minimumScaleFactor(0.5)
.lineLimit(1)
// β
Matn matni uchun o'rash afzal β juda kichrayish o'qishni qiyinlashtiradi
Text("Uzun tavsif matni bu yerda")
.font(.body)
// minimumScaleFactor ishlatmang β o'rashga ruxsat bering
Tezkor ma'lumotnoma
| Sintaksis | Vazifasi |
|---|---|
.font(.headline) | Semantik uslub β Dynamic Type bilan avtomatik |
.font(.system(size: 16)) | β Qattiq o'lcham β Dynamic Type ni hurmat qilmaydi |
@ScaledMetric var o'lcham: CGFloat = 48 | Matn o'lchamiga mutanosib o'lchamlangan xususiyat |
@ScaledMetric(relativeTo: .headline) | Maxsus uslubga nisbatan o'lchamlash |
.minimumScaleFactor(0.5) | Joylashuv buzilganda kichrayishga ruxsat β ehtiyotkorlik bilan |
π― Topshiriq: Dynamic Type sinovdan o'tkazish
Profil qatori ko'rinishi yarating: avatar uchun @ScaledMetric li doira, ism uchun .headline va qo'shilgan sana uchun .subheadline. Xcode Preview da matn o'lchami slayderini eng katta accessibility o'lchamiga o'rnating. Avatar va matn mutanosib ravishda kattayadimi? HStack(alignment: .top) qo'shing β katta matn o'lchamida qanday farq qilishini ko'ring.