要快速从相机中捕获图片,我们可以使用AVFoundation,它是iOS SDK中的框架,但是在相机应用程序中需要大量自定义功能之前,我们应尽量避免使用它。在此示例中,我们将仅从相机捕获图片并将其显示在视图上。在此示例中,我们将使用图像选择器代替AVFoundation。
首先,创建一个项目,并在情节提要中在其视图控制器上添加图像视图。在其类中创建插座。现在在ViewController类中使其符合-
class ViewController: UIViewController,UIImagePickerControllerDelegate,UINavigationControllerDelegate
之后,创建一个objc函数。
@objc func openCamera(){ }
现在,在您的View中确实加载了,向您的View Controller中添加一个轻击手势识别器,当点击屏幕时,它应该调用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) }
完成上述步骤后,现在我们将实现UIImagePickerControllerDelegate的didFinishPickingMediaWithInfo方法,在此方法内部,我们将获得用户从相机捕获的图像。
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上运行它并捕获图像时,这就是产生的结果。另外,请注意,该应用程序不能在模拟器上运行。