如何在Swift中将实时摄像头预览添加到UIView?


为了在Swift中将实时摄像头预览添加到默认的UIView中,我们可以使用iOS SDK的AVFoundation框架或原生的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+上运行上述代码时,得到的结果如下。

更新于:2019年7月30日

712 次浏览

启动你的职业生涯

完成课程获得认证

开始学习
广告