Full Screen Cover — iOS-da modal taqdimot uslubi bo'lib, unda yangi ekran ota-moddiy tarkib ko'rinmasdan butun displeyni egallaydi. Page Sheet-dan farqli o'laroq, Full Screen Cover oldingi ekranni butunlay yashiradi va media kontent, foto muharrirlari va avtorizatsiya ekranlari uchun ishlatiladi. Apple Developer, 2025 ma'lumotlariga ko'ra, bu uslub iOS 13 gacha standart edi, ammo immersiv stsenariylar uchun afzal qolinadi. SwiftUI-da .fullScreenCover modifikatori to'liq ekran taqdimoti uchun deklarativ API-ni ta'minlaydi.
Asosiy nuqtalar
Full Screen Cover — iOS-da modal taqdimot uslubi bo'lib, unda taqdim etilgan kontroller qurilmaning butun ekranini egallaydi. Ota-moddiy tarkib butunlay yashiriladi, bu immersiya effektini yaratadi va foydalanuvchini joriy vazifaga qaratadi.
iOS 13 gacha Full Screen Cover iPhone-dagi yagona modal taqdimot uslubi edi. Barcha present(_:animated:completion:) chaqiruvlari standart sifatida .fullScreen dan foydalanardi. iOS 13 dan boshlab Apple standart uslubni .automatic ga o'zgartirdi, bu iPhone uchun .pageSheet ni tanlaydi. Biroq, Full Screen Cover mavjud bo'lib qoladi va to'liq diqqat talab qiladigan stsenariylar uchun qo'llaniladi.
Page Sheet-dan farqli o'laroq, Full Screen Cover ota-moddiy tarkib bilan o'zaro aloqaga ruxsat bermaydi va uni modal oyna ostida ko'rsatmaydi. Foydalanuvchi Full Screen Cover-ni pastga surish bilan yopa olmaydi — yopish uchun dasturiy ravishda dismiss(animated:completion:) chaqiruvi yoki ekranning o'zida yopish tugmasi talab qilinadi. Ushbu xatti-harakat UX dizaynida hisobga olinishi muhim.
Page Sheet — iOS 13 da paydo bo'lgan ikkinchi asosiy modal taqdimot uslubi. Page Sheet yuqoridan bo'sh joy bilan karta shaklida ko'rsatiladi, uning ostida ota-ona ekrani ko'rinadi. Foydalanuvchi Page Sheet-ni pastga surish bilan yopishi mumkin. Full Screen Cover esa, aksincha, ota-moddiy tarkibni yashiradi va surish bilan yopilishni qo'llab-quvvatlamaydi.
| Xususiyat | Full Screen Cover | Page Sheet |
|---|---|---|
| Fonni qoplash | To'liq, ota-moddiy tarkib ko'rinmaydi | Qisman, ota-ona karta ostida ko'rinadi |
| Surish bilan yopish | Yo'q, faqat dasturiy yoki tugma orqali | Ha, pastga surish yopadi |
| Oddiy qo'llanish | Video, kamera, foto muharriri, PDF | Formalar, sozlamalar, batafsil ko'rish |
| Ko'rsatish animatsiyasi | Pastdan yuqoriga, to'liq ekran | Pastdan yuqoriga, bo'sh joyli karta |
| Mavjudlik | iOS 2+ | iOS 13+ |
Full Screen Cover va Page Sheet o'rtasidagi tanlov mazmun va kontekstga bog'liq. Tavsiya etiladi Full Screen Cover-dan to'liq diqqat talab qiladigan kontent uchun foydalanish: to'liq ekran rejimida video, fotosuratlarni oldindan ko'rish, hujjatlarni skanerlash. Page Sheet — ota-ona ekranining konteksti muhim bo'lgan vazifalar uchun: tahrirlash formalari, parametrlarni tanlash, tafsilotlarni ko'rish.
UIKit modal taqdimot uslubini sozlash uchun UIModalPresentationStyle.fullScreen doimiysini taqdim etadi. Ushbu xususiyatni UIViewController da present chaqiruvidan oldin o'rnatish kontrollerning to'liq ekranda ko'rsatilishini kafolatlaydi. Kontroller shuningdek klaviatura paydo bo'lganda xatti-harakatni va tizim hodisalarini qayta ishlashni boshqaradi.
.fullScreen uslubini o'rnatgandan so'ng, yopilish hodisalarini boshqarish uchun presentationController?.delegate ni sozlash tavsiya etiladi. UIAdaptivePresentationControllerDelegate delegati yopilish urinishini tutib olish va ma'lumot yo'qotilishining oldini olish imkonini beradi. Page Sheet-dan farqli o'laroq, Full Screen Cover uchun delegat faqat dasturiy dismiss chaqiruvida ishga tushadi.
Full Screen Cover ekran aylanishi va klaviatura paydo bo'lishini to'g'ri boshqaradi. Aylanishda modal kontroller avtomatik ravishda yangi yo'nalishga moslashadi. UIKeyboardWillShowNotification klaviatura paydo bo'lganda tarkibni yuqoriga siljitish imkonini beradi, shunda matn maydonlari ko'rinadigan bo'lib qoladi. Page Sheet-dan farqli o'laroq, Full Screen Cover klaviatura paydo bo'lganda o'lchamlarini o'zgartirmaydi.
let playerVC = VideoPlayerViewController()
playerVC.modalPresentationStyle = .fullScreen
playerVC.modalTransitionStyle = .crossDissolve
present(playerVC, animated: true) {
playerVC.startPlayback()
}
// Bekor qilish
dismiss(animated: true) {
print("Pleyer bekor qilindi")
}
SwiftUI deklarativ tarzda to'liq ekranli modal oynalar yaratish uchun .fullScreenCover modifikatorini taqdim etadi. .sheet (Page Sheet) dan farqli o'laroq, .fullScreenCover o'xshash xatti-harakat bilan .fullScreen uslubini yaratadi: tarkibni to'liq qoplash va surish bilan yopilmaslik.
Modifikator Bool binding yoki ixtiyoriy identifikatsiya qilinadigan obyektni qabul qiladi. Binding true ga o'rnatilganda, SwiftUI to'liq ekran oynasining paydo bo'lishini animatsiya qiladi. Ma'lumotlarni uzatish uchun onDismiss parametri va tarkibli closure ishlatiladi. \.dismiss muhit qiymati modal oynani ichkaridan yopish imkonini beradi.
SwiftUI-da .fullScreenCover va .sheet o'rtasidagi tanlov UIKit-ga o'xshaydi: .fullScreenCover immersiv kontent uchun, .sheet kartalar uchun. SwiftUI avtomatik ravishda to'g'ri yopilish xatti-harakatini tanlaydi: .sheet surish bilan yopilishi mumkin, .fullScreenCover — faqat dasturiy ravishda. Modifikatorlar bir View ierarxiyasida birlashtirilishi mumkin.
struct CameraView: View {
@State private var showCamera = false
var body: some View {
Button("Kamerani ochish") {
showCamera = true
}
.fullScreenCover(isPresented: $showCamera) {
CameraPreviewView()
.ignoresSafeArea()
}
}
}
struct CameraPreviewView: View {
@Environment(\.dismiss) private var dismiss
var body: some View {
ZStack {
Color.black.ignoresSafeArea()
VStack {
Spacer()
Button("Suratga olish") { dismiss() }
.foregroundColor(.white)
}
}
}
}
Full Screen Cover UIKit-da UIModalTransitionStyle orqali va SwiftUI-da maxsus o'tishlar orqali moslashtirilgan animatsiyalarni qo'llab-quvvatlaydi. Standart uslublar: .coverVertical (pastdan yuqoriga), .crossDissolve (silliq paydo bo'lish), .flipHorizontal (aylantirish) va .partialCurl (sahifa effekti).
To'liq moslashtirilgan animatsiya uchun UIViewControllerAnimatedTransitioning protokolini amalga oshiring. Bu animatsiya davomiyligini va o'tishning o'zini animateTransition(using:) metodi orqali aniqlash imkonini beradi. Animatsiya kontrolleri UINavigationControllerDelegate yoki UIViewControllerTransitioningDelegate delegati orqali tayinlanadi.
SwiftUI-da .fullScreenCover uchun maxsus o'tishlar matchedGeometryEffect orqali yaratiladi. Ushbu modifikator elementni ota-ona View dan to'liq ekran oynasiga ko'chirishni animatsiya qiladi. Masalan, foto miniatyurasiga bosganda, u silliq ravishda to'liq ekranga ochiladi, davomiylik effektini yaratadi. MatchedGeometryEffect id va namespace bilan ishlaydi, elementni manba va maqsad pozitsiyasida bog'laydi.
struct PhotoViewer: View {
@State private var selectedPhoto: String?
@Namespace private var animation
var body: some View {
HStack {
ForEach(["photo1", "photo2"], id: \.self) { photo in
Image(photo)
.matchedGeometryEffect(id: photo, in: animation)
.onTapGesture { selectedPhoto = photo }
}
}
.fullScreenCover(item: $selectedPhoto) { photo in
Image(photo)
.matchedGeometryEffect(id: photo, in: animation)
.ignoresSafeArea()
}
}
}
Full Screen Cover tarkib ota-ona interfeysidan chalg'itmasdan butun ekranni egallashi kerak bo'lgan stsenariylar uchun tavsiya etiladi. Apple HIG uchta asosiy kategoriyani ajratadi: media kontent, kontent yaratish vositalari va vaqtinchalik tizim interfeyslari.
Video pleerlar, fotosuratlarni ko'rish, PDF va komikslarni o'qish — Full Screen Cover dan foydalanishning odatiy misollari. AVPlayerViewController iOS-da landshaft rejimiga o'tishda avtomatik ravishda to'liq ekran rejimidan foydalanadi. Adobe Lightroom kabi foto muharrirlari tasvirlar kutubxonasi ustida to'liq ekran muharririni ochadi.
Kamera, hujjat skaneri, ovoz yozish — foydalanuvchining to'liq diqqatini talab qiladigan vazifalar. UIImagePickerController iOS 14 gacha kamera uchun Full Screen Cover dan foydalanardi. iOS 14 dan boshlab tizim tanlovchisi Page Sheet dan foydalanadi, ammo dasturchi maxsus kamera uchun .fullScreen ni majburiy o'rnatishi mumkin.
Full Screen Cover dan foydalanmang: ro'yxatdan o'tish formalari (Page Sheet afzal), ota-ona sahifa konteksti muhim bo'lgan matn kiritish ekranlari va modal oyna ichidagi ketma-ket navigatsiya uchun. Material Design ham tizimning orqaga tugmasini bloklashdan qochishni tavsiya qiladi — iOS-da bu ruxsat etilgan, ammo foydalanuvchi UI elementi orqali yopishning aniq usuliga ega bo'lishi kerak.
Tez-tez so'raladigan savollar
.fullScreen ota-ona kontrollerini yashiradi va uni ko'rsatish ierarxiyasidan olib tashlaydi. .overFullScreen modal kontrollerini ota-ona ustida ko'rsatadi, ammo ota-ona ierarxiyada qoladi va hodisalarni qabul qilishda davom etadi. overFullScreen shaffof fonlar va qatlamlarning maxsus animatsiyalari uchun foydalidir.
Apple iOS 13 da foydalanuvchi bilan o'zaro aloqani yaxshilash uchun standart uslubni o'zgartirdi. Page Sheet ota-ona ekranining kontekstini ko'rish va modal oynani surish bilan yopish imkonini beradi, bu navigatsiyani tezlashtiradi. Full Screen Cover fondan chalg'itmasdan to'liq diqqat talab qiladigan stsenariylar uchun qoladi.
UIKit-da presentingViewController yoki presentedViewController da dismiss(animated:completion:) ni chaqiring. SwiftUI-da \.dismiss muhit qiymatidan foydalaning va uni funksiya sifatida chaqiring. Ota-ona kontrollerdan dasturiy yopish uchun .fullScreenCover ga uzatilgan binding ni false ga o'zgartiring.
Ha, Full Screen Cover iPad da ishlaydi. iPad uchun qo'shimcha uslublar mavjud: .formSheet (sobit o'lchamli markazlashtirilgan oyna) va .currentContext (ota-ona kontrolleriga nisbatan). iPad da Full Screen Cover Page Sheet kabi ko'rinishi mumkin, agar modalPresentationStyle majburiy o'rnatilmagan bo'lsa.
Page Sheet-dan farqli o'laroq, Full Screen Cover surish bilan yopilmaydi, shuning uchun ma'lumot yo'qotilishi faqat dasturiy dismiss da mumkin. dismiss(animated:completion:) metodini bekor qiling yoki yopilishdan oldin chaqiriladigan UIAdaptivePresentationControllerDelegate dan foydalaning. Variantlar bilan UIAlertController ko'rsating: saqlash, bekor qilish yoki ekranda qolish.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.