ในการจับภาพจากกล้องอย่างรวดเร็ว เราสามารถใช้ AVFoundation ซึ่งเป็นเฟรมเวิร์กใน iOS SDK แต่เราควรพยายามหลีกเลี่ยงการใช้จนกว่าเราจะต้องการคุณสมบัติที่กำหนดเองจำนวนมากในแอปพลิเคชันกล้องของเรา ในตัวอย่างนี้ เราจะจับภาพจากกล้องและแสดงในมุมมองเท่านั้น เราจะใช้เครื่องมือเลือกรูปภาพในตัวอย่างนี้แทน AVFoundation
ขั้นแรก สร้างโครงการและเพิ่มมุมมองรูปภาพบนตัวควบคุมมุมมองในกระดานเรื่องราว สร้างทางออกในระดับเดียวกัน ตอนนี้ในคลาส ViewController สอดคล้องกับ -
class ViewController: UIViewController,UIImagePickerControllerDelegate,UINavigationControllerDelegate
หลังจากนั้นสร้างฟังก์ชัน objc
@objc func openCamera(){ }
ตอนนี้โหลดใน View ของคุณแล้ว ให้เพิ่มตัวจดจำท่าทางการแตะไปยังตัวควบคุมการดูของคุณ ซึ่งควรเรียกใช้ฟังก์ชัน openCamera เมื่อแตะหน้าจอ
override func viewDidLoad() { super.viewDidLoad() let gesture = UITapGestureRecognizer(target: self, action: #selector(openCamera)) self.view.addGestureRecognizer(gesture) }
ตอนนี้ในฟังก์ชันให้เพิ่มโค้ดต่อไปนี้
@objc func openCamera() { let imgPicker = UIImagePickerController() imgPicker.delegate = self imgPicker.sourceType = .camera imgPicker.allowsEditing = false imgPicker.showsCameraControls = true self.present(imgPicker, animated: true, completion: nil) }
เมื่อคุณทำตามขั้นตอนข้างต้นแล้ว เราจะใช้เมธอด didFinishPickingMediaWithInfo ของ UIImagePickerControllerDelegate และในวิธีนี้ เราจะได้ภาพที่ผู้ใช้ถ่ายจากกล้อง
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { if let img = info[UIImagePickerController.InfoKey.editedImage] as? UIImage { self.imgV.image = img self.dismiss(animated: true, completion: nil) } else { print("error") } } }
ตอนนี้ เราต้องเพิ่มคีย์คำอธิบายการใช้กล้องใน info.plist และให้คำอธิบายว่าเหตุใดแอปพลิเคชันของเราต้องการใช้กล้อง เมื่อเราเรียกใช้สิ่งนี้บน iPhone และถ่ายภาพ นี่คือผลลัพธ์ที่ได้ นอกจากนี้ โปรดทราบว่าแอปพลิเคชันนี้ไม่สามารถเรียกใช้บนเครื่องจำลองได้