ในการจับภาพจากกล้องอย่างรวดเร็ว เราสามารถใช้ 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 และถ่ายภาพ นี่คือผลลัพธ์ที่ได้ นอกจากนี้ โปรดทราบว่าแอปพลิเคชันนี้ไม่สามารถเรียกใช้บนเครื่องจำลองได้
