ในการเพิ่มการแสดงตัวอย่างกล้องถ่ายทอดสดไปยัง 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+ ผลลัพธ์ที่ได้คือด้านล่างนี้
