[swift] Swift에서 카메라 미리보기 화면 구현하기

Swift를 사용하여 iOS 앱을 개발하는 경우, 카메라 미리보기 화면을 구현해야 하는 경우가 있습니다. 이 블로그 포스트에서는 Swift를 사용하여 카메라 미리보기 화면을 구현하는 방법에 대해 알아보겠습니다.

AVFoundation 프레임워크를 이용한 카메라 미리보기 구현

AVFoundation 프레임워크는 오디오 비디오 컨텐츠를 캡처, 재생, 편집하기 위한 프레임워크입니다. 이를 사용하여 iOS 앱에서 카메라 미리보기를 구현할 수 있습니다.

아래는 AVFoundation 프레임워크를 사용하여 카메라 미리보기 화면을 구현하는 예시 코드입니다.

import UIKit
import AVFoundation

class CameraViewController: UIViewController, AVCapturePhotoCaptureDelegate {

    var captureSession: AVCaptureSession!
    var backCamera: AVCaptureDevice!
    var frontCamera: AVCaptureDevice!
    var currentCamera: AVCaptureDevice!

    var photoOutput: AVCapturePhotoOutput!

    var cameraPreviewLayer: AVCaptureVideoPreviewLayer!

    override func viewDidLoad() {
        super.viewDidLoad()

        captureSession = AVCaptureSession()

        setupCaptureSession()
        setupDevice()
        setupInputOutput()

        setupPreviewLayer()
        startRunningCaptureSession()
    }

    func setupCaptureSession() {
        captureSession.sessionPreset = AVCaptureSession.Preset.photo
    }

    func setupDevice() {
        let deviceDiscoverySession = AVCaptureDevice.DiscoverySession(deviceTypes: [AVCaptureDevice.DeviceType.builtInWideAngleCamera], mediaType: AVMediaType.video, position: AVCaptureDevice.Position.unspecified)

        let devices = deviceDiscoverySession.devices

        for device in devices {
            if device.position == AVCaptureDevice.Position.back {
                backCamera = device
            } else if device.position == AVCaptureDevice.Position.front {
                frontCamera = device
            }
        }

        currentCamera = backCamera
    }

    func setupInputOutput() {
        do {
            let captureDeviceInput = try AVCaptureDeviceInput(device: currentCamera)
            captureSession.addInput(captureDeviceInput)
            photoOutput = AVCapturePhotoOutput()
            photoOutput.setPreparedPhotoSettingsArray([AVCapturePhotoSettings(format: [AVVideoCodecKey: AVVideoCodecType.jpeg])], completionHandler: nil)
            captureSession.addOutput(photoOutput)
        } catch {
            print(error)
        }
    }

    func setupPreviewLayer() {
        cameraPreviewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
        cameraPreviewLayer.videoGravity = AVLayerVideoGravity.resizeAspectFill
        cameraPreviewLayer.connection?.videoOrientation = AVCaptureVideoOrientation.portrait
        cameraPreviewLayer.frame = view.layer.bounds
        view.layer.insertSublayer(cameraPreviewLayer, at: 0)
    }

    func startRunningCaptureSession() {
        captureSession.startRunning()
    }
}

위의 코드는 CameraViewController 클래스에서 AVFoundation 프레임워크를 사용하여 카메라 미리보기 화면을 구현한 예시입니다.

결론

Swift에서는 AVFoundation 프레임워크를 사용하여 카메라 미리보기 화면을 구현할 수 있습니다. 위 예시 코드를 참고하여 앱에 맞게 카메라 미리보기를 구현해보세요.

참고 문헌:

더 많은 디테일은 Apple Developer Documentation에서 확인할 수 있습니다.