- Published on
Safe area va ignoresSafeArea()
- Authors
- Name
- ShoxruxC
- @iOSdasturchi
Zamonaviy iPhone'larda ekranning ba'zi joylari jismonan kesib kirilgan (Dynamic Island, yon tirqish) yoki tizim tomonidan band qilingan (pastki home indicator, yuqoridagi status bar). SwiftUI bu hududlarni safe area deb ataydi β va odatda tarkibingiz uning ichida qoladi.
Bu standart holat yaxshi. U tugmalaringizning home indicator ortida yashirib qolishini va matnIngizning status bar soati bilan qoplanishini oldini oladi. Lekin ba'zida ataylab chiqib ketish kerak bo'ladi β masalan, fon rangini yoki rasmni ekranning chekkalarigacha cho'zish uchun. .ignoresSafeArea() modifikatori buni amalga oshirish imkonini beradi.
Bu yerdagi muhim fikr: .ignoresSafeArea() view-ning frame-ini safe area hududlarini qamrab olish uchun kengaytiradi β lekin tarkibingizni u hududlarga ko'chirishingiz shart emas. Status bar ortiga fondni cho'zib, matnni safe area ichida ushlab turishingiz mumkin.
ignoresSafeArea() variantlari
.ignoresSafeArea(.keyboard) β klaviatura tarkibni siljitmasin
TextField("Qidirish", text: $searchText)
.textFieldStyle(.roundedBorder)
.padding()
// Klaviatura bu text field konteynerini yuqoriga siljitishini oldini oladi
.ignoresSafeArea(.keyboard)
Odatda SwiftUI klaviatura paydo bo'lganda fokusli matn maydonlarini ko'rinib turishini ta'minlash uchun tarkibni yuqoriga siljitadi. .ignoresSafeArea(.keyboard) konteynerta bu xatti-harakatni o'chiradi β klaviatura qochishini o'zingiz boshqarganingizda foydali.
Ma'lum chetlar β faqat ba'zi safe area chetlarini e'tiborsiz qoldirish
Color.blue
// Faqat yuqori chetni (status bar / Dynamic Island) e'tiborsiz qoldiradi
.ignoresSafeArea(edges: .top)
Qaysi safe area chetlarini e'tiborsiz qoldirishni cheklash uchun edges: parametrini bering. Variantlar: .top, .bottom, .leading, .trailing, .horizontal, .vertical, .all.
safeAreaInset() β safe area chetigida suzib yuruvchi kontent
ScrollView {
LazyVStack {
/* ro'yxat tarkibi */
}
}
// Pastki safe area ustida suzib yuruvchi tugma qo'shadi
.safeAreaInset(edge: .bottom) {
Button("Yaratish") { }
.buttonStyle(.borderedProminent)
.padding()
}
.safeAreaInset() safe area chetigida view joylashtiradi va hech narsa suzuvchi overlay ortida yashirib qolmasligi uchun asosiy tarkibga avtomatik bo'sh joy qo'shadi. Bu scroll view ustiga suzib yuruvchi harakat tugmasi yoki toolbar qo'shishning to'g'ri usuli.
Tezkor ma'lumotnoma
| Modifikator | Vazifasi |
|---|---|
.ignoresSafeArea() | View-ni barcha safe area hududlari ortiga kengaytiradi |
.ignoresSafeArea(edges: .top) | Faqat ma'lum chet(lar)da safe area-ni e'tiborsiz qoldiradi |
.ignoresSafeArea(.keyboard) | Klaviatura tarkibni siljitishini oldini oladi |
.safeAreaInset(edge:) | Safe area chetigida overlay kontent qo'shadi va avtomatik bo'sh joy yaratadi |
Topshiriq: to'liq qoplamali gradient sarlavha
Yuqorida to'liq qoplamali gradient sarlavhali ekran yarating. ZStack ishlatilsin: .purple dan .indigo gacha LinearGradient fon .ignoresSafeArea(edges: .top) yordamida status bar ortiga cho'zilsin va ustida katta oq sarlavha va taglavha bo'lgan VStack joylashsin. Sarlavha maydonidan pastda kulrang fonda bir nechta oq kontent qatori bo'lsin. Canvas-da tekshiring β gradient status bar bilan birga ekranning yuqorisigacha to'lib turishi kerak.