Full Screen Cover: bu nima, to'liq ekran taqdimoti va UIKit

Muallif: IT Sectr Nashr etilgan: 2026-06-09 O'qish vaqti: 5 daq

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-ning to'liq ekranli modal taqdimoti, ota-moddiy tarkibni butun ko'rsatish vaqti davomida yashiradi.
  • UIModalPresentationStyle.fullScreen — present chaqiruvida to'liq ekran rejimini o'rnatadigan UIKit doimiysi.
  • SwiftUI deklarativ tarzda to'liq ekranli modal oynalar yaratish uchun .fullScreenCover modifikatorini taqdim etadi.
  • Full Screen Cover fonni to'liq qoplashi va surish bilan interaktiv yopilmasligi bilan Page Sheet-dan farqlanadi.
  • Ishlatiladi video pleerlar, kamera, foto muharrirlari, PDF ko'rish va boshqa immersiv stsenariylar uchun.

iOS-da Full Screen Cover nima?

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.

Full Screen Cover vs Page Sheet: uslublarni solishtirish

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.

XususiyatFull Screen CoverPage Sheet
Fonni qoplashTo'liq, ota-moddiy tarkib ko'rinmaydiQisman, ota-ona karta ostida ko'rinadi
Surish bilan yopishYo'q, faqat dasturiy yoki tugma orqaliHa, pastga surish yopadi
Oddiy qo'llanishVideo, kamera, foto muharriri, PDFFormalar, sozlamalar, batafsil ko'rish
Ko'rsatish animatsiyasiPastdan yuqoriga, to'liq ekranPastdan yuqoriga, bo'sh joyli karta
MavjudlikiOS 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-da amalga oshirish: UIModalPresentationStyle

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.

Sozlash va delegat

.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.

Ekran aylanishi va klaviatura

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.

swift
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: .fullScreenCover modifikatori

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.

Binding va ma'lumotlar bilan foydalanish

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.

Full Screen Cover vs Sheet

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.

swift
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)
            }
        }
    }
}

Maxsus animatsiyalar va o'tishlar

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).

UIKit: UIViewControllerAnimatedTransitioning

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: Matched Geometry Effect

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.

swift
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 qachon ishlatiladi?

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.

Media va o'yin-kulgi

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.

Kontent yaratish vositalari

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.

Nimadan qochish kerak

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

iOS-da .fullScreen va .overFullScreen o'rtasidagi farq nima?

.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.

Nega Apple standart uslubni fullScreen dan pageSheet ga o'zgartirdi?

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.

Full Screen Cover-ni dasturiy ravishda qanday yopish mumkin?

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.

Full Screen Cover iPad da ishlaydimi?

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.

Ma'lumot yo'qotilishida Full Screen Cover yopilishini qanday oldini olish mumkin?

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

  • Full Screen Cover — iOS modal taqdimot uslubi, ota-moddiy tarkibni yashiradi va butun ekranni egallaydi.
  • UIKit Full Screen Cover-ni UIModalPresentationStyle.fullScreen orqali maxsus o'tish animatsiyalari bilan amalga oshiradi.
  • SwiftUI silliq o'tishlar uchun matchedGeometryEffect qo'llab-quvvatlashi bilan .fullScreenCover modifikatorini taqdim etadi.
  • Full Screen Page Sheet-dan surish bilan yopilmasligi va ota-moddiy tarkibni to'liq qoplashi bilan farqlanadi.
  • Tavsiya etiladi video pleerlar, kamera, foto muharrirlari va boshqa immersiv stsenariylar uchun.
  • Tavsiya etilmaydi formalar, sozlamalar va modal oyna ichidagi navigatsiya ketma-ketligi uchun.
  • Ma'lumot yo'qotilishini yopilishni tasdiqlash dialogi bilan UIAdaptivePresentationControllerDelegate orqali oldini oling.

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.

Loyihani muhokama qilish

Shuningdek o'qing