Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> IOS

จะเพิ่ม Live Camera Preview ให้กับ UIView ใน Swift ได้อย่างไร?


ในการเพิ่มการแสดงตัวอย่างกล้องถ่ายทอดสดไปยัง UIView เริ่มต้นของเราอย่างรวดเร็ว เราสามารถใช้เฟรมเวิร์ก AVFoundation ของ iOS SDK หรือ 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+ ผลลัพธ์ที่ได้คือด้านล่างนี้

จะเพิ่ม Live Camera Preview ให้กับ UIView ใน Swift ได้อย่างไร?