Full Screen Cover: nədir, tam ekran təqdimatı və UIKit

Müəllif: IT Sectr Dərc olunub: 2026-06-09 Oxuma vaxtı: 5 dəq

Full Screen Cover — iOS-da modal təqdimat üslubudur, burada yeni ekran valideyn məzmunu görünmədən bütün displeyi tutur. Page Sheet-dən fərqli olaraq, Full Screen Cover əvvəlki ekranı tamamilə gizlədir və media məzmunu, foto redaktorları və avtorizasiya ekranları üçün istifadə olunur. Apple Developer, 2025-ə görə, bu üslub iOS 13-ə qədər defolt idi, lakin immersiv ssenarilər üçün üstünlük təşkil edir. SwiftUI-də .fullScreenCover modifikatoru tam ekran təqdimatı üçün deklarativ API təmin edir.

Əsas məqamlar

  • Full Screen Cover — iOS-un tam ekran modal təqdimatı, göstərilmə müddəti boyunca valideyn məzmununu gizlədir.
  • UIModalPresentationStyle.fullScreen — present çağırışı zamanı tam ekran rejimini təyin edən UIKit sabiti.
  • SwiftUI deklarativ şəkildə tam ekran modal pəncərələr yaratmaq üçün .fullScreenCover modifikatorunu təqdim edir.
  • Full Screen Cover fonun tam örtülməsi və sürüşdürmə ilə interaktiv bağlanmanın olmaması ilə Page Sheet-dən fərqlənir.
  • İstifadə olunur video pleyerlər, kamera, foto redaktorları, PDF baxışı və digər immersiv ssenarilər üçün.

iOS-da Full Screen Cover nədir?

Full Screen Cover — iOS-da modal təqdimat üslubudur, burada təqdim olunan kontroller cihazın bütün ekranını tutur. Valideyn məzmunu tamamilə gizlənir ki, bu da immersiya effekti yaradır və istifadəçini cari tapşırığa yönəldir.

iOS 13-ə qədər Full Screen Cover iPhone-da yeganə modal təqdimat üslubu idi. Bütün present(_:animated:completion:) çağırışları defolt olaraq .fullScreen istifadə edirdi. iOS 13-dən başlayaraq Apple defolt üslubu .automatic olaraq dəyişdi, bu da iPhone üçün .pageSheet seçir. Lakin Full Screen Cover sərbəst qalır və tam diqqət tələb edən ssenarilər üçün tətbiq olunur.

Page Sheet-dən fərqli olaraq, Full Screen Cover valideyn məzmunu ilə qarşılıqlı əlaqəyə imkan vermir və onu modal pəncərənin altında göstərmir. İstifadəçi Full Screen Cover-i aşağı sürüşdürməklə bağlaya bilməz — bağlamaq üçün proqramlı şəkildə dismiss(animated:completion:) çağırışı və ya ekranın özündə bağlama düyməsi tələb olunur. Bu davranış UX dizayn edərkən nəzərə alınmalıdır.

Full Screen Cover vs Page Sheet: üslubların müqayisəsi

Page Sheet — iOS 13-də ortaya çıxan ikinci əsas modal təqdimat üslubudur. Page Sheet yuxarıdan boşluq olan kart şəklində göstərilir, altında valideyn ekranı görünür. İstifadəçi Page Sheet-i aşağı sürüşdürməklə bağlaya bilər. Full Screen Cover isə əksinə, valideyn məzmununu gizlədir və sürüşdürmə ilə bağlanmanı dəstəkləmir.

XüsusiyyətFull Screen CoverPage Sheet
Fonun örtülməsiTam, valideyn məzmunu görünmürQismən, valideyn kartın altında görünür
Sürüşdürmə ilə bağlanmaYox, yalnız proqramlı və ya düymə iləBəli, aşağı sürüşdürmə bağlayır
Tipik tətbiqVideo, kamera, foto redaktoru, PDFFormalar, parametrlər, detallı baxış
Göstərmə animasiyasıAşağıdan yuxarı, tam ekranAşağıdan yuxarı, boşluqlu kart
MövcudluqiOS 2+iOS 13+

Full Screen Cover və Page Sheet arasında seçim məzmun və kontekstdən asılıdır. Tövsiyə olunur Full Screen Cover-dən tam diqqət tələb edən məzmun üçün istifadə etmək: tam ekran rejimində video, foto önbaxışı, sənədlərin skan edilməsi. Page Sheet — valideyn ekranının kontekstinin vacib olduğu tapşırıqlar üçün: redaktə formaları, seçim parametrləri, detallara baxış.

UIKit-də tətbiq: UIModalPresentationStyle

UIKit modal təqdimat üslubunu konfiqurasiya etmək üçün UIModalPresentationStyle.fullScreen sabitini təqdim edir. Bu xassəni present çağırmazdan əvvəl UIViewController-də təyin etmək, kontrollerin tam ekranda göstərilməsini təmin edir. Kontroller həmçinin klaviaturanın görünməsi və sistem hadisələrinin işlənməsi zamanı davranışı idarə edir.

Konfiqurasiya və delegat

.fullScreen üslubunu təyin etdikdən sonra bağlanma hadisələrini idarə etmək üçün presentationController?.delegate konfiqurasiya etmək tövsiyə olunur. UIAdaptivePresentationControllerDelegate delegatı bağlanma cəhdini ələ keçirməyə və məlumat itkisinin qarşısını almağa imkan verir. Page Sheet-dən fərqli olaraq, Full Screen Cover üçün delegat yalnız proqramlı dismiss çağırışı zamanı işləyir.

Ekranın fırlanması və klaviatura

Full Screen Cover ekranın fırlanmasını və klaviaturanın görünməsini düzgün idarə edir. Fırlanma zamanı modal kontroller avtomatik olaraq yeni oriyentasiyaya uyğunlaşır. UIKeyboardWillShowNotification klaviatura görünəndə məzmunu yuxarı sürüşdürməyə imkan verir ki, mətn sahələri görünən qalsın. Page Sheet-dən fərqli olaraq, Full Screen Cover klaviatura görünəndə ölçülərini dəyişmir.

swift
let playerVC = VideoPlayerViewController()
playerVC.modalPresentationStyle = .fullScreen
playerVC.modalTransitionStyle = .crossDissolve
present(playerVC, animated: true) {
    playerVC.startPlayback()
}

// Bağla
dismiss(animated: true) {
    print("Pleyer bağlandı")
}

SwiftUI: .fullScreenCover modifikatoru

SwiftUI deklarativ şəkildə tam ekran modal pəncərələr yaratmaq üçün .fullScreenCover modifikatorunu təqdim edir. .sheet (Page Sheet)-dən fərqli olaraq, .fullScreenCover analog davranışla .fullScreen üslubunu yaradır: məzmunun tam örtülməsi və sürüşdürmə ilə bağlanmanın olmaması.

Binding və data ilə istifadə

Modifikator Bool tipli binding və ya opsional identifikasiya olunan obyekt qəbul edir. Binding true olaraq təyin edildikdə SwiftUI tam ekran pəncərəsinin görünməsini animasiya edir. Məlumat ötürmək üçün onDismiss parametri və məzmunlu closure istifadə olunur. \.dismiss mühit dəyəri modal pəncərəni daxildən bağlamağa imkan verir.

Full Screen Cover vs Sheet

SwiftUI-də .fullScreenCover və .sheet arasında seçim UIKit-ə bənzəyir: .fullScreenCover immersiv məzmun üçün, .sheet kartlar üçün. SwiftUI avtomatik olaraq düzgün bağlanma davranışını seçir: .sheet sürüşdürmə ilə bağlana bilər, .fullScreenCover — yalnız proqramlı. Modifikatorlar bir View iyerarxiyasında birləşdirilə bilər.

swift
struct CameraView: View {
    @State private var showCamera = false

    var body: some View {
        Button("Kameranı aç") {
            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("Çək") { dismiss() }
                    .foregroundColor(.white)
            }
        }
    }
}

Xüsusi animasiyalar və keçidlər

Full Screen Cover UIKit-də UIModalTransitionStyle və SwiftUI-də xüsusi keçidlər vasitəsilə fərdi animasiyaları dəstəkləyir. Standart üslublar: .coverVertical (aşağıdan yuxarı), .crossDissolve (hamar görünmə), .flipHorizontal (çevrilmə) və .partialCurl (səhifə effekti).

UIKit: UIViewControllerAnimatedTransitioning

Tamamilə fərdi animasiya üçün UIViewControllerAnimatedTransitioning protokolunu tətbiq edin. Bu, animasiya müddətini və keçidin özünü animateTransition(using:) metodu vasitəsilə təyin etməyə imkan verir. Animasiya kontrolleri UINavigationControllerDelegate və ya UIViewControllerTransitioningDelegate delegatı vasitəsilə təyin edilir.

SwiftUI: Matched Geometry Effect

SwiftUI-də .fullScreenCover üçün xüsusi keçidlər matchedGeometryEffect vasitəsilə yaradılır. Bu modifikator elementi valideyn View-dən tam ekran pəncərəsinə köçürməni animasiya edir. Məsələn, foto miniatürünə klik etdikdə o, hamar şəkildə tam ekrana açılaraq davamlılıq effekti yaradır. MatchedGeometryEffect id və namespace ilə işləyir, mənbə və hədəf mövqedəki elementi birləşdirir.

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 nə vaxt istifadə olunmalı?

Full Screen Cover məzmunun valideyn interfeysindən yayınmadan bütün ekranı tutması lazım olan ssenarilər üçün tövsiyə olunur. Apple HIG üç əsas kateqoriya ayırır: media məzmunu, məzmun yaratma alətləri və müvəqqəti sistem interfeysləri.

Media və əyləncə

Video pleyerlər, foto baxışı, PDF və komiks oxuma — Full Screen Cover istifadəsinin tipik nümunələri. AVPlayerViewController iOS-da landşaft rejiminə keçərkən avtomatik olaraq tam ekran rejimindən istifadə edir. Adobe Lightroom kimi foto redaktorları şəkillər kitabxanası üzərində tam ekran redaktoru açır.

Məzmun yaratma alətləri

Kamera, sənəd skaneri, səs yazısı — istifadəçinin tam diqqətini tələb edən tapşırıqlar. UIImagePickerController iOS 14-ə qədər kamera üçün Full Screen Cover istifadə edirdi. iOS 14-dən etibarən sistem seçicisi Page Sheet istifadə edir, lakin tərtibatçı xüsusi kamera üçün .fullScreen-i məcburi təyin edə bilər.

Nədən qaçınmaq lazımdır

Full Screen Cover-dən istifadə etməyin: qeydiyyat formaları (Page Sheet üstünlük təşkil edir), valideyn səhifəsinin kontekstinin vacib olduğu mətn daxiletmə ekranları və modal pəncərə daxilində ardıcıl naviqasiya üçün. Material Design də sistem geri düyməsinin bloklanmasından qaçınmağı tövsiyə edir — iOS-da bu icazəlidir, lakin istifadəçi interfeys elementi vasitəsilə aydın bağlanma yoluna malik olmalıdır.

Tez-tez soruşulan suallar

iOS-da .fullScreen və .overFullScreen arasında nə fərq var?

.fullScreen valideyn kontrollerini gizlədir və onu göstərmə iyerarxiyasından çıxarır. .overFullScreen modal kontrolleri valideynin üzərində göstərir, lakin valideyn iyerarxiyada qalır və hadisələri almağa davam edir. overFullScreen şəffaf fonlar və təbəqələrin xüsusi animasiyaları üçün faydalıdır.

Apple niyə defolt üslubu fullScreen-dən pageSheet-ə dəyişdi?

Apple iOS 13-də istifadəçi qarşılıqlı əlaqəsini yaxşılaşdırmaq üçün defolt üslubu dəyişdi. Page Sheet valideyn ekranının kontekstini görməyə və modal pəncərəni sürüşdürməklə bağlamağa imkan verir ki, bu da naviqasiyanı sürətləndirir. Full Screen Cover fondan yayınmadan tam diqqət tələb edən ssenarilər üçün qalır.

Full Screen Cover-i proqramlı şəkildə necə bağlamaq olar?

UIKit-də presentingViewController və ya presentedViewController üzərində dismiss(animated:completion:) çağırın. SwiftUI-də \.dismiss mühit dəyərindən istifadə edin və onu funksiya kimi çağırın. Valideyn kontrollerdən proqramlı bağlama üçün .fullScreenCover-ə ötürülən binding-i false olaraq dəyişin.

Full Screen Cover iPad-də işləyir?

Bəli, Full Screen Cover iPad-də işləyir. iPad üçün əlavə üslublar mövcuddur: .formSheet (sabit ölçülü mərkəzləşdirilmiş pəncərə) və .currentContext (valideyn kontrollerinə nisbətən). iPad-də Full Screen Cover Page Sheet kimi görünə bilər, əgər modalPresentationStyle məcburi təyin edilməyibsə.

Məlumat itkisi zamanı Full Screen Cover-in bağlanmasının qarşısını necə almaq olar?

Page Sheet-dən fərqli olaraq, Full Screen Cover sürüşdürmə ilə bağlanmır, buna görə də məlumat itkisi yalnız proqramlı dismiss zamanı mümkündür. dismiss(animated:completion:) metodunu overwrite edin və ya bağlanmadan əvvəl çağrılan UIAdaptivePresentationControllerDelegate istifadə edin. Seçimlərlə UIAlertController göstərin: yadda saxla, ləğv et və ya ekranda qal.

Xülasə

  • Full Screen Cover — iOS modal təqdimat üslubu, valideyn məzmununu gizlədir və bütün ekranı tutur.
  • UIKit Full Screen Cover-i UIModalPresentationStyle.fullScreen vasitəsilə xüsusi keçid animasiyaları ilə tətbiq edir.
  • SwiftUI hamar keçidlər üçün matchedGeometryEffect dəstəyi ilə .fullScreenCover modifikatorunu təqdim edir.
  • Full Screen Page Sheet-dən sürüşdürmə ilə bağlanmanın olmaması və valideyn məzmununun tam örtülməsi ilə fərqlənir.
  • Tövsiyə olunur video pleyerlər, kamera, foto redaktorları və digər immersiv ssenarilər üçün.
  • Tövsiyə olunmur formalar, parametrlər və modal pəncərə daxilində naviqasiya ardıcıllığı üçün.
  • Məlumat itkisinin qarşısını bağlanma təsdiqi dialoqu ilə UIAdaptivePresentationControllerDelegate vasitəsilə alın.

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun