[swift] Swift에서 전면 카메라와 후면 카메라 전환하기

iOS 앱에서 전면 카메라와 후면 카메라를 전환하는 기능은 많은 앱에서 사용되는 중요한 기능 중 하나입니다. Swift에서 이러한 카메라 전환 기능을 구현하는 방법을 알아보겠습니다.

카메라 전환을 위한 AVCaptureDevice 및 AVCaptureSession 설정

먼저, AVCaptureDevice 및 AVCaptureSession을 사용하여 카메라를 제어합니다. 사용할 기기에 대한 입력을 설정한 다음, 세션을 시작하여 카메라를 활성화합니다.

import AVFoundation

// 기기의 입력을 설정
var captureDevice: AVCaptureDevice!
if isUsingFrontCamera {
    captureDevice = AVCaptureDevice.default(.builtInWideAngleCamera, for: AVMediaType.video, position: .front)
} else {
    captureDevice = AVCaptureDevice.default(.builtInWideAngleCamera, for: AVMediaType.video, position: .back)
}

// 세션 설정
var session = AVCaptureSession()

do {
    let input = try AVCaptureDeviceInput(device: captureDevice)
    if session.canAddInput(input) {
        session.addInput(input)
    }
} catch {
    print(error)
}

카메라 전환 버튼 동작 구현

전면 카메라와 후면 카메라를 전환하기 위한 버튼을 구현합니다. 버튼을 터치할 때마다 isUsingFrontCamera 변수의 값을 토글하여 카메라 전환을 할 수 있습니다.

// 전면/후면 카메라 전환 버튼 동작
@IBAction func switchCameraButtonTapped(_ sender: Any) {
    isUsingFrontCamera.toggle()
    session.beginConfiguration()
    // 현재 세션을 중지하고 모든 input과 output을 제거
    for input in session.inputs {
        session.removeInput(input)
    }
    // 새로운 카메라로 세션을 업데이트
    updateSession()
    session.commitConfiguration()
}

// 새로운 카메라로 세션 업데이트
func updateSession() {
    session = AVCaptureSession()
    do {
        let input = try AVCaptureDeviceInput(device: getCaptureDevice())
        if session.canAddInput(input) {
            session.addInput(input)
        }
    } catch {
        print(error)
    }
}
func getCaptureDevice() -> AVCaptureDevice? {
    if isUsingFrontCamera {
        return AVCaptureDevice.default(.builtInWideAngleCamera, for: AVMediaType.video, position: .front)
    } else {
        return AVCaptureDevice.default(.builtInWideAngleCamera, for: AVMediaType.video, position: .back)
    }
}

이제 위의 코드를 사용하여 Swift에서 전면 카메라와 후면 카메라를 전환하는 기능을 구현하고 사용자가 쉽게 카메라를 전환할 수 있는 앱을 만들 수 있습니다.

참고 자료