使用 Swift 捕获 iOS 相机图片
在 Swift 中捕获相机图片,我们可以使用 AVFoundation,它是 iOS SDK 中的一个框架,但我们应该尽量避免使用它,除非我们的相机应用程序需要大量自定义功能。在本例中,我们只捕获相机图片并在视图上显示。在本例中,我们将使用图像选择器而不是 AVFoundation。
首先,创建一个项目并在其故事板中的视图控制器上添加一个图像视图。在类中创建出口。现在,在 ViewController 类内部,使其符合以下协议:
class ViewController: UIViewController,UIImagePickerControllerDelegate,UINavigationControllerDelegate
之后,创建一个 objc 函数。
@objc func openCamera(){ }
现在,在你的 View did load 中,向你的视图控制器添加一个轻触手势识别器,当屏幕被轻触时,它应该调用 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 上运行它并捕获图片时,会产生以下结果。另外,请注意,此应用程序无法在模拟器上运行。
广告