Full Screen Cover: คืออะไร การนำเสนอแบบเต็มหน้าจอ และ UIKit

ผู้แต่ง: IT Sectr เผยแพร่เมื่อ: 2026-06-09 เวลาอ่าน: 5 นาที

Full Screen Cover คือรูปแบบการนำเสนอแบบ modal ใน iOS ที่หน้าจอใหม่ครอบครุมหน้าจอทั้งหมดโดยไม่เห็นเนื้อหาส่วนแม่แบบ แตกต่างจาก Page Sheet, Full Screen Cover จะซ่อนหน้าจอก่อนหน้าโดยสิ้นเชิง และใช้สำหรับเนื้อหามัลติมีเดีย โปรแกรมแก้ไขภาพ และหน้าจออนุญาต ตาม Apple Developer, 2025 รูปแบบนี้เป็นค่าเริ่มต้นจนถึง iOS 13 แต่ยังคงเป็นที่นิยมสำหรับสถานการณ์แบบสร้างสรรค์ ใน SwiftUI ตัวแก้ไข .fullScreenCover มอบ API แบบประกาศสำหรับการนำเสนอแบบเต็มหน้าจอ

ข้อสำคัญ

  • Full Screen Cover คือการนำเสนอแบบ modal แบบเต็มหน้าจอใน iOS ที่ซ่อนเนื้อหาส่วนแม่แบบตลอดการแสดงผล
  • UIModalPresentationStyle.fullScreen คือค่าคงของ UIKit ที่ตั้งโหมดเต็มหน้าจอเมื่อเรียก present
  • SwiftUI มอบตัวแก้ไข .fullScreenCover สำหรับการสร้างหน้าต่าง modal แบบเต็มหน้าจอแบบประกาศ
  • Full Screen Cover แตกต่างจาก Page Sheet ตรงที่คลุมพื้นหลังอย่างสมบูรณ์และไม่มีการปิดแบบอนเครื่องด้วยการปัด
  • ใช้งาน สำหรับโปรแกรมเล่นวิดีโอ กล้องถ่ายรูป โปรแกรมแก้ไขภาพ การดู PDF และสถานการณ์แบบสร้างสรรค์อื่น ๆ

Full Screen Cover ใน iOS คืออะไร?

Full Screen Cover คือรูปแบบการนำเสนอแบบ modal ใน iOS ที่ตัวควบคุมที่ถูกนำเสนอจะครอบครุมหน้าจอแบบเต็มอุปกรณ์ เนื้อหาส่วนแม่แบบจะถูกซ่อนโดยสิ้นเชิง สร้างผลกระทับแบบสร้างสรรค์และโฟกัสผู้ใช้ไปที่งานปัจจุบัน

ก่อน iOS 13, Full Screen Cover เป็นรูปแบบการนำเสนอแบบ modal เดียวใน iPhone การเรียกทั้งหมดๆ ถึง present(_:animated:completion:) ใช้ .fullScreen เป็นค่าเริ่มต้น เริ่มตั้งแต่ iOS 13, Apple ได้เปลี่ยนรูปแบบเริ่มต้นเป็น .automatic ซึ่งสำหรับ iPhone จะเลือก .pageSheet อย่างไรก็ตาม Full Screen Cover ยังคงใช้งานได้ และใช้สำหรับสถานการณ์ที่ต้องการโฟกัสอย่างเต็มที่

แตกต่างจาก Page Sheet, Full Screen Cover ไม่อนุญาตให้โต้ตอบกับเนื้อหาส่วนแม่แบบและไม่แสดงมันภายใต้หน้าต่าง modal ผู้ใช้ไม่สามารถปิด Full Screen Cover ด้วยการปัดลงได้ — การปิดต้องใช้การเรียกโปรแกรม dismiss(animated:completion:) หรือปุ่มปิดบนหน้าจอเอง พฤติกรรมนี้เป็นสิ่งสำคัญที่ต้องพิจารณาเมื่อออกแบบ UX

Full Screen Cover vs Page Sheet: เปรียบเทียบรูปแบบ

Page Sheet คือรูปแบบการนำเสนอแบบ modal หลักที่สอง ซึ่งเปิดตัวใน iOS 13 Page Sheet แสดงผลเป็นการ์ดที่มีรอบส่วนบน โดยมีหน้าจอแม่แบบมองเห็นได้ด้านล่าง ผู้ใช้สามารถปิด Page Sheet โดยการปัดลง ในทางกลับกัน Full Screen Cover จะซ่อนเนื้อหาส่วนแม่แบบและไม่รองรับการปิดด้วยการปัด

ลักษณะFull Screen CoverPage Sheet
การคลุมพื้นหลังเต็มที่ มองไม่เห็นเนื้อหาส่วนแม่แบบบางส่วน มองเห็นส่วนแม่แบบด้านล่างการ์ด
การปิดด้วยการปัดไม่ เฉพาะโดยโปรแกรมหรือปุ่มได้ ปัดลงเพื่อปิด
การใช้งานทั่วไปวิดีโอ กล้องถ่ายรูป โปรแกรมแก้ไขภาพ PDFแบบฟอร์ม การตั้งค่า มุมมองรายละเอียด
แอนิเมชันการนำเสนอจากล่างขึ้นบน เต็มหน้าจอจากล่างขึ้นบน การ์ดพร้อมรอบว่าง
ความพร้อมใช้งานiOS 2+iOS 13+

การเลือกระหว่าง Full Screen Cover และ Page Sheet ขึ้นอยู่กับเนื้อหาและบริบท แนะนำให้ใช้ Full Screen Cover สำหรับเนื้อหาที่ต้องการความสนใจอย่างเต็มที่ เช่น วิดีโอเต็มหน้าจอ การดูตัวอย่างภาพล่วงหน้า การสแกนเอกสาร Page Sheet สำหรับงานที่บริบทของหน้าจอส่วนแม่แบบมีความสำคัํ เช่น แบบฟอร์มแก้ไข การเลือกตัวเลือก มุมมองรายละเอียด

การนำไปใช้ใน UIKit: UIModalPresentationStyle

UIKit มอบค่าคง UIModalPresentationStyle.fullScreen สำหรับการกำหนดค่ารูปแบบการนำเสนอแบบ modal การตั้งค่าคุณสมบัตินี้บน UIViewController ก่อนเรียก present จะรับประกันว่าตัวควบคุมจะแสดงผลเต็มหน้าจอ ตัวควบคุมยังจัดการพฤติกรรมเมื่อแป้นพิมพ์ปรากฏและจัดการกับกิจกรรมของระบบ

การกำหนดค่าและตัวแทน

หลังจากตั้งค่ารูปแบบ .fullScreen แล้ว แนะนำให้กำหนดค่า presentationController?.delegate เพื่อจัดการกับกิจกรรมการปิด ตัวแทน UIAdaptivePresentationControllerDelegate ช่วยให้สามารถสกัดการพยายามปิดและป้องกันการสูญเสียข้อมูล แตกต่างจาก Page Sheet สำหรับ Full Screen Cover ตัวแทนจะทำงานเฉพาะเมื่อมีการเรียก dismiss โดยโปรแกรม

การจัดการหมุนและแป้นพิมพ์

Full Screen Cover จัดการหมุนหน้าจอและการปรากฏของแป้นพิมพ์ได้อย่างถูกต้อง เมื่อหมุน ตัวควบคุมแบบ modal จะปรับตัวโดยอัตโนมัติตามทิศทางใหม่ UIKeyboardWillShowNotification ช่วยให้เลื่อนเนื้อหาขึ้นด้านบนเมื่อแป้นพิมพ์ปรากฏ เพื่อให้ช่องข้อความยังมองเห็น แตกต่างจาก Page Sheet, Full Screen Cover จะไม่เปลี่ยนขนาดเมื่อแป้นพิมพ์ปรากฏ

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

// ปิด
dismiss(animated: true) {
    print("ปิดตัวเล่นแล้ว")
}

SwiftUI: ตัวแก้ไข .fullScreenCover

SwiftUI มอบตัวแก้ไข .fullScreenCover สำหรับการสร้างหน้าต่าง modal แบบเต็มหน้าจอแบบประกาศ แตกต่างจาก .sheet (Page Sheet), .fullScreenCover จะสร้างรูปแบบ .fullScreen ที่มีพฤติกรรมคล้ายกัน: คลุมเนื้อหาอย่างสมบูรณ์และไม่มีการปิดด้วยการปัด

การใช้งานกับ binding และข้อมูล

ตัวแก้ไขรับ binding ไปยัง Bool หรือรายการที่สามารถระบุตัวตนได้แบบเลือกได้ เมื่อตั้ง binding เป็น true, SwiftUI จะสร้างแอนิเมชันการปรากฏของหน้าต่างเต็มหน้าจอ สำหรับการส่งข้อมูลใช้พารามิเตอร์ onDismiss และ closure ที่มีเนื้อหา ค่าสภาพแวดล้อม \.dismiss ช่วยให้ปิดหน้าต่าง modal จากภายใน

Full Screen Cover vs Sheet

การเลือกระหว่าง .fullScreenCover และ .sheet ใน SwiftUI คล้ายกับ UIKit: .fullScreenCover สำหรับเนื้อหาแบบสร้างสรรค์, .sheet สำหรับการ์ด SwiftUI เลือกพฤติกรรมการปิดที่ถูกต้องโดยอัตโนมัติ: .sheet สามารถปิดด้วยการปัด, .fullScreenCover เฉพาะโดยโปรแกรม ตัวแก้ไขสามารถรวมกันในลำดับชั้น View เดียวกัน

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

    var body: some View {
        Button("เปิดกล้อง") {
            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("ถ่ายรูป") { dismiss() }
                    .foregroundColor(.white)
            }
        }
    }
}

แอนิเมชันและการเปลี่ยนแปลงแบบกำหนดเอง

Full Screen Cover รองรับแอนิเมชันแบบกำหนดเองผ่าน UIModalTransitionStyle ใน UIKit และการเปลี่ยนแปลงแบบกำหนดเองใน SwiftUI รูปแบบมาตรฐานได้แก่: .coverVertical (จากล่างขึ้นบน), .crossDissolve (ปรากฏอย่างค่อยๆ), .flipHorizontal (พลิกกลับ), .partialCurl (พลิกหน้า)และ

UIKit: UIViewControllerAnimatedTransitioning

สำหรับแอนิเมชันที่กำหนดเองอย่างสมบูรณ์ ให้นำไปใช้โปรโตคอล UIViewControllerAnimatedTransitioning โปรโตคอลนี้ช่วยให้กำหนดระยะเวลาแอนิเมชันและการเปลี่ยนแปลงผ่านมีเธอด animateTransition(using:) ตัวควบคุมแอนิเมชันถูกกำหนดผ่าน UINavigationControllerDelegate หรือ UIViewControllerTransitioningDelegate

SwiftUI: Matched Geometry Effect

ใน SwiftUI การเปลี่ยนแปลงแบบกำหนดเองสำหรับ .fullScreenCover ถูกสร้างโดยใช้ matchedGeometryEffect ตัวแก้ไขนี้จะสร้างแอนิเมชันการเคลื่อนย้ายองค์จาก View หลักไปยังหน้าต่างเต็มหน้าจอ ตัวอย่างเช่น เมื่อแตะภาพย่อ ภาพจะขยายอย่างนุ่มนวลเต็มหน้าจอ สร้างผลกระทับความต่อเนื่อง MatchedGeometryEffect ทำงานกับ id และ namespace ที่เชื่อมโยงองค์ในตำแหน่งต้นทางและปลายทาง

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?

Full Screen Cover แนะนำสำหรับสถานการณ์ที่เนื้อหาต้องครอบครุมหน้าจอทั้งหมดโดยไม่มีสิ่งรบกวนจากส่วนติดต่อแม่แบบ Apple HIG ระบุหมวดหมู่หลักสามประเภท: เนื้อหามัลติมีเดีย, เครื่องมือสร้างเนื้อหา, และส่วนติดต่อระบบชั่วคราว

สื่อและความบันเทิง

โปรแกรมเล่นวิดีโอ การดูภาพ การอ่าน PDF และการ์ตูนเป็นตัวอย่างทั่วไปของการใช้ Full Screen Cover AVPlayerViewController ใน iOS จะใช้โหมดเต็มหน้าจอโดยอัตโนมัติเมื่อเปลี่ยนเป็นแนวนอน โปรแกรมแก้ไขภาพอย่าง Adobe Lightroom เปิดโปรแกรมแก้ไขแบบเต็มหน้าจอเหนือไลบรารีภาพ

เครื่องมือสร้างเนื้อหา

กล้องถ่ายรูป เครื่องสแกนเอกสาร การบันทึกเสียง — งานที่ต้องการความสนใจอย่างเต็มที่ของผู้ใช้ UIImagePickerController ใช้ Full Screen Cover สำหรับกล้องถ่ายรูปก่อน iOS 14 เริ่มต้นแต่ iOS 14 ตัวเลือกของระบบใช้ Page Sheet แต่นักพัฒนาสามารถบังคับให้ใช้ .fullScreen สำหรับกล้องถ่ายรูปที่กำหนดเอง

สิ่งที่ควรหลีกเลี่ยง

อย่าใช้ Full Screen Cover สำหรับ: แบบฟอร์มลงทะเบียน (Page Sheet เหมาะกว่า), หน้าจอที่มีการป้อนข้อความที่บริบทของหน้าแม่แบบมีความสำคัํ และการนำทางแบบลำดับภายในหน้าต่าง modal Material Design แนะนำให้หลีกเลี่ยงการบล็อกปุ่มกลับของระบบ — เรื่องนี้ยอมรับได้ใน iOS แต่ผู้ใช้ต้องมีวิธีที่ชัดเจนในการปิดผ่านองค์ประกอบ UI

คำถามที่พบบ่อย

.fullScreen และ .overFullScreen ใน iOS แตกต่างกันอย่างไร?

.fullScreen จะซ่อนตัวควบคุมหลักและลบออกจากลำดับชั้นการแสดงผล .overFullScreen จะแสดงตัวควบคุม modal ทับตัวหลัก แต่ตัวหลักยังคงอยู่ในลำดับชั้นและยังคงรับกิจกรรมต่อไป overFullScreen มีประโยชน์สำหรับพื้นหลังโปร่งใส และแอนิเมชันเลเยอร์ที่กำหนดเอง

ทำไม Apple เปลี่ยนรูปแบบเริ่มต้นจาก fullScreen เป็น pageSheet?

Apple เปลี่ยนรูปแบบเริ่มต้นใน iOS 13 เพื่อปรับปรุงการตอบโต้กับผู้ใช้ Page Sheet ช่วยให้เห็นบริบทของหน้าจอส่วนแม่แบบและปิดหน้าต่าง modal ด้วยการปัด ซึ่งช่วยเร่งการนำทาง Full Screen Cover ยังคงใช้สำหรับสถานการณ์ที่ต้องการโฟกัสอย่างเต็มที่โดยไม่ถูกรบกวนจากพื้นหลัง

จะปิด Full Screen Cover โดยโปรแกรมได้อย่างไร?

ใน UIKit ให้เรียก dismiss(animated:completion:) บน presentingViewController หรือ presentedViewController ใน SwiftUI ให้ใช้ค่าสภาพแวดล้อม \.dismiss และเรียกมันเหมือนฟังก์ชัน สำหรับการปิดโดยโปรแกรมจากตัวควบคุมหลัก ให้ตั้ง binding ที่ส่งไปยัง .fullScreenCover เป็น false

Full Screen Cover ทำงานบน iPad หรือไม่?

ได้ Full Screen Cover ทำงานบน iPad มีรูปแบบเพิ่มเติมสำหรับ iPad: .formSheet (หน้าต่างกลางขนาดคงที่) และ .currentContext (สัมพันธ์กับตัวควบคุมหลัก) บน iPad Full Screen Cover อาจดูเหมือน Page Sheet หากไม่ได้ตั้ง modalPresentationStyle อย่างชัดเจน

จะป้องกันการสูญเสียข้อมูลเมื่อปิด Full Screen Cover ได้อย่างไร?

แตกต่างจาก Page Sheet, Full Screen Cover ไม่สามารถปิดด้วยการปัด ดังนั้นการสูญเสียข้อมูลจะเกิดขึ้นได้เฉพาะในกรณีที่มีการ dismiss โดยโปรแกรม เพิ่มเติมเมธอด dismiss(animated:completion:) หรือใช้ UIAdaptivePresentationControllerDelegate ซึ่งจะถูกเรียกก่อนการปิด แสดง UIAlertController พร้อมตัวเลือก: บันทึก ยกเลิก หรืออยู่ต่อไปบนหน้าจอ

สรุป

  • Full Screen Cover คือรูปแบบการนำเสนอแบบ modal ใน iOS ที่ซ่อนเนื้อหาส่วนแม่แบบและครอบครุมหน้าจอทั้งหมด
  • UIKit นำไปใช้ Full Screen Cover ผ่าน UIModalPresentationStyle.fullScreen พร้อมแอนิเมชันการเปลี่ยนแปลงแบบกำหนดเอง
  • SwiftUI มอบตัวแก้ไข .fullScreenCover พร้อมการรองรับ matchedGeometryEffect สำหรับการเปลี่ยนแปลงที่ลื่นไหล
  • Full Screen แตกต่างจาก Page Sheet ตรงที่ไม่มีการปิดด้วยการปัดและคลุมเนื้อหาส่วนแม่แบบอย่างสมบูรณ์
  • แนะนำ สำหรับโปรแกรมเล่นวิดีโส กล้องถ่ายรูป โปรแกรมแก้ไขภาพ และสถานการณ์แบบสร้างสรรค์อื่น ๆ
  • ไม่แนะนำ สำหรับแบบฟอร์มการป้อนข้อมูล การตั้งค่า และลำดับการนำทางภายในหน้าต่าง modal
  • ป้องกันการสูญเสียข้อมูล ผ่าน UIAdaptivePresentationControllerDelegate พร้อมกล่องโต้ตอบยืนยันเมื่อปิด

เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร

IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ

ปรึกษาโครงการ

อ่านเพิ่มเติม