Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> iOS

Cách thêm Camera Preview trực tiếp vào UIView bằng Swift

Để hiển thị preview camera trực tiếp lên UIView, có 2 cách: dùng AVFoundation (tùy chỉnh cao) hoặc UIImagePickerController (đơn giản, phù hợp preview đơn giản). Bài này dùng UIImagePickerController.

Các bước

  1. Tạo UIImagePickerController object.
  2. Class conform UIImagePickerControllerDelegate & UINavigationControllerDelegate.
  3. Gán delegate, set sourceType = .camera.
  4. Add picker làm child view controller, add picker.view làm subview của UIView đích.

Code hoàn chỉnh

override func viewDidLoad() {
    super.viewDidLoad()
    
    let imagePicker = UIImagePickerController()
    
    if UIImagePickerController.isCameraDeviceAvailable(.front) {
        imagePicker.delegate = self
        imagePicker.sourceType = .camera
        imagePicker.cameraDevice = .front  // hoặc .rear
        imagePicker.allowsEditing = false
        imagePicker.showsCameraControls = false  // Ẩn UI mặc định
        
        addChild(imagePicker)
        view.addSubview(imagePicker.view)
        imagePicker.view.frame = view.bounds
        imagePicker.view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
        
        imagePicker.didMove(toParent: self)
    }
}

Kết quả trên iPhone 7+

Cách thêm Camera Preview trực tiếp vào UIView bằng Swift

Lưu ý quan trọng

  • Không chạy được trên Simulator (không có camera).
  • Cần thêm NSCameraUsageDescription vào Info.plist.
  • showsCameraControls = false để ẩn UI mặc định (nút chụp, chuyển camera...), tự custom UI.
  • Để tùy chỉnh nâng cao (focus, exposure, zoom, format video, metadata) – dùng AVFoundation (AVCaptureSession, AVCaptureDeviceInput, AVCaptureVideoPreviewLayer).
  • Nhớ gọi imagePicker.didMove(toParent: self) sau khi addChild.