Computer >> Máy Tính >  >> Lập trình >> IOS

Làm cách nào để thêm bản xem trước camera trực tiếp vào UIView trong Swift?

Để thêm bản xem trước camera trực tiếp vào UIView mặc định của chúng tôi nhanh chóng, chúng tôi có thể sử dụng khung AVFoundation của iOS SDK hoặc UIImagePickerController () gốc. Trong ví dụ này, chúng tôi sẽ sử dụng ImagePicker vì mục đích của chúng tôi là trình bày bản xem trước máy ảnh trên UIView và Imagepicker phù hợp cho tác vụ đó. AVFoundation có thể được sử dụng khi chúng tôi cần nhiều tùy chỉnh trên máy ảnh của mình hoặc các loại hành động tùy chỉnh khác nhau.

Để hiển thị bản xem trước camera trên UIView, chúng ta cần thực hiện các bước sau.

  • Tạo một đối tượng UIImagePickerController.

  • Chỉnh sửa lớp của chúng tôi thành UIImagePickerControllerDelegate và UINavigationControllerDelegate.

  • Chỉ định người ủy quyền cho đối tượng mà chúng ta đã tạo ở bước một.

  • Thêm đối tượng mà chúng tôi đã tạo khi còn nhỏ

  • Thêm chế độ xem của trẻ dưới dạng Chế độ xem phụ vào UIView của chúng tôi.

Để đạt được điều tương tự, chúng tôi sẽ sử dụng mã bên dưới

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]
   }
}

Đối với ví dụ này, chúng tôi chưa viết bất kỳ hàm nào và chúng tôi trực tiếp tạo các đối tượng ở đây, nhưng luôn là lựa chọn tốt để sử dụng biến lười trong các tình huống mà chúng tôi có thể không cần sử dụng một số biến.

Mã này sẽ không hoạt động trên trình mô phỏng vì nó sử dụng máy ảnh. Khi tôi chạy mã trên trên iPhone 7+, dưới đây là kết quả được tạo ra.

Làm cách nào để thêm bản xem trước camera trực tiếp vào UIView trong Swift?