ในการเพิ่มการแสดงตัวอย่างกล้องถ่ายทอดสดไปยัง UIView เริ่มต้นของเราอย่างรวดเร็ว เราสามารถใช้เฟรมเวิร์ก AVFoundation ของ iOS SDK หรือ UIImagePickerController() ดั้งเดิม ในตัวอย่างนี้ เราจะใช้ ImagePicker เนื่องจากเป้าหมายของเราคือการนำเสนอตัวอย่างกล้องบน UIView และ Imagepicker เหมาะสำหรับงานนั้น สามารถใช้ AVFoundation เมื่อเราต้องการการปรับแต่งจำนวนมากในกล้องของเราหรือการกระทำที่กำหนดเองประเภทต่างๆ
ในการแสดงตัวอย่างกล้องบน UIView เราจำเป็นต้องดำเนินการตามขั้นตอนต่อไปนี้
-
สร้างวัตถุ UIImagePickerController
-
กำหนดให้คลาสของเราเป็น UIImagePickerControllerDelegate และ UINavigationControllerDelegate
-
มอบหมายผู้รับมอบสิทธิ์ให้กับวัตถุที่เราสร้างในขั้นตอนที่หนึ่ง
-
เพิ่มวัตถุที่เราสร้างขึ้นเมื่อตอนเป็นเด็ก
-
เพิ่มมุมมองของเด็กเป็นมุมมองย่อยใน UIView ของเรา
เพื่อให้บรรลุเช่นเดียวกัน เราจะใช้รหัสด้านล่าง
override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib let imgPicker = UIImagePickerController() if UIImagePickerController.isCameraDeviceAvailable( UIImagePickerController.CameraDevice.front) { imgPicker.delegate = self imgPicker.sourceType = .camera addChild(imgPicker) self.view.addSubview(imgPicker.view) imgPicker.view.frame = self.view.bounds imgPicker.allowsEditing = false imgPicker.showsCameraControls = false imgPicker.view.autoresizingMask = [.flexibleWidth, .flexibleHeight] } }
สำหรับตัวอย่างนี้ เรายังไม่ได้เขียนฟังก์ชันใดๆ และเราได้สร้างออบเจ็กต์ที่นี่โดยตรง แต่เป็นทางเลือกที่ดีเสมอที่จะใช้ตัวแปรสันหลังยาวในสถานการณ์ที่เราอาจไม่จำเป็นต้องใช้ตัวแปรบางตัว
รหัสนี้จะไม่ทำงานบนเครื่องจำลองเนื่องจากใช้กล้อง เมื่อฉันเรียกใช้โค้ดด้านบนบน iPhone 7+ ผลลัพธ์ที่ได้คือด้านล่างนี้