- Published on
Spacer va Divider
- Authors
- Name
- ShoxruxC
- @iOSdasturchi
Odatda SwiftUI stack'lari view'larni tarkibiga sig'adigan eng kichik joyga joylaydi. Bu oddiy layoutlar uchun yaxshi, lekin real ilovalardagi ko'pchilik vaziyatlarda nafas olish joyi kerak bo'ladi — sarlavhani yuqoriga, tugmani pastga surish yoki bo'limlar orasiga ajratuvchi chiziq qo'yish. Aynan mana shu hollarda Spacer va Divider kerak bo'ladi.
Spacer — joylashtirilgan yo'nalishda barcha mavjud bo'sh joyni egallaydiган ko'rinmas view. Uni o'ylab ko'ring: ikki view orasiga qo'ysangiz, ular iloji boricha uzoqqa itariladi — xuddi yay (spring) kabi. Divider esa bo'limlarni vizual ajratadigan yupqa gorizontal (yoki vertikal) chiziq — iOS-ning Sozlamalar (Settings) menyusida ko'rganingiz kabi.
Spacer ham, Divider ham o'z-o'zicha hech qanday ko'rinadigan kontent ko'rsatmaydi. Spacer — sof layout vositasi; Divider — bitta chiziq. Ikkalasi birgalikda har qanday SwiftUI ilovasida eng ko'p ishlatiladigan ikkita layout vositasini tashkil etadi.
Spacer va Divider variantlari
Bir nechta Spacer — joyni teng taqsimlash
VStack {
// Har bir Spacer bo'sh joyning teng ulushini oladi
Spacer()
Text("Yuqori uchdan bir qism")
Spacer()
Text("O'rta uchdan bir qism")
Spacer()
Text("Pastki uchdan bir qism")
Spacer()
}
To'rtta Spacer uchta Text atrofida barcha mavjud bo'sh joyni teng taqsimlaydi — view'lar yuqoridan pastgacha teng masofada joylashadi. Onboarding ekranlar yoki splash layoutlar uchun juda qulay.
minLength — Spacer uchun minimal o'lcham belgilash
VStack {
Text("Bo'lim Sarlavhasi").font(.headline)
// Bu Spacer har doim kamida 32 pt bo'ladi
Spacer(minLength: 32)
Text("Quyidagi tarkib")
}
Odatda Spacer konteyner juda kichik bo'lsa nolgacha qisqarishi mumkin. minLength: buni oldini oladi. Kichikroq qurilmalarda ham hech qachon yo'qolmaydigan nafas olish joyi kerak bo'lganda foydali.
HStack ichidagi Spacer — view'larni ikki tomonga itarish
HStack {
Text("Chap")
// HStack ichidagi Spacer gorizontal kengayadi
Spacer()
Text("O'ng")
}
HStack ichida Spacer vertikal emas, gorizontal yo'nalishda itaradi. "Chap" bosh (leading) chegaraga, "O'ng" esa oxirgi (trailing) chegaraga yopishadi. Bu navigatsiya paneli (navigation bar) ko'rinishidagi satrlar uchun standart patterndir.
HStack ichidagi Divider — vertikal ajratgich chizish
HStack {
Text("A variant")
// HStack ichidagi Divider vertikal chiziq chizadi
Divider()
Text("B variant")
}
.fixedSize(horizontal: false, vertical: true)
HStack ichida Divider vertikal chiziq chizadi. .fixedSize modifikatori HStack-ga belgilangan balandlik beradi, shunda Divider to'ldirishga yer topadi. Usiz Divider ko'rinmasligi mumkin.
Keng tarqalgan xato:
ZStackichigaSpacerqo'yish narsalarni ajratmaydi.SpacerfaqatVStackvaHStackichida kutilgandek ishlaydi.
Tezkor ma'lumotnoma
| View / Modifikator | Vazifasi |
|---|---|
Spacer() | Stack yo'nalishida barcha bo'sh joyni egallaydi |
Spacer(minLength: n) | Xuddi shunday, lekin hech qachon n pt dan kichik bo'lmaydi |
Divider() | Gorizontal chiziq chizadi (HStack ichida vertikal) |
| VStack ichidagi Spacer | Vertikal kengayadi, qo'shni view'larni chegaralarga itaradi |
| HStack ichidagi Spacer | Gorizontal kengayadi, qo'shni view'larni yonlarga itaradi |
Topshiriq: profil satrini yaratish
Sozlamalar ekranidagi profil satriga o'xshash view yarating. Chapdan o'ngga: aylana (Circle().fill(.blue).frame(width: 44, height: 44)), keyin kichikroq shriftda ism va taglavhasi bo'lgan VStack, keyin Spacer, keyin ko'k rangdagi "Tahrirlash" matni. Butun satr barcha tomonlardan padding bilan o'ralgan bo'lsin. Canvas-da tekshiring — u odatdagi iOS sozlamalar katakchasiga o'xshash bo'lishi kerak.