如何在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 次瀏覽

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.