Để 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.