[swift] Swift에서 카메라 기능을 사용하는 방법

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

카메라 접근 권한 요청

먼저, 카메라를 사용하려면 사용자로부터 카메라에 대한 접근 권한을 요청해야 합니다. Info.plist 파일에 NSCameraUsageDescription 키를 추가하여 사용 권한 요청 메시지를 설정할 수 있습니다. 아래는 이를 구현한 예시입니다.

import AVFoundation

AVCaptureDevice.requestAccess(for: .video) { granted in
    if granted {
        // 권한 허용 시 처리
    } else {
        // 권한 거부 시 처리
    }
}

카메라 뷰 구현

카메라를 사용하기 위해서는 AVCaptureSession, AVCaptureDevice, AVCaptureDeviceInput, AVCapturePhotoOutput 등의 클래스를 사용하여 카메라를 구성해야 합니다. 아래는 카메라 뷰를 구현하는 간단한 예시입니다.

import UIKit
import AVFoundation

class CameraViewController: UIViewController {

    let captureSession = AVCaptureSession()
    var previewLayer: AVCaptureVideoPreviewLayer!

    override func viewDidLoad() {
        super.viewDidLoad()

        if let device = AVCaptureDevice.default(for: .video), let input = try? AVCaptureDeviceInput(device: device) {
            captureSession.addInput(input)

            previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
            previewLayer.videoGravity = .resizeAspectFill
            previewLayer.frame = view.layer.bounds
            view.layer.addSublayer(previewLayer)

            captureSession.startRunning()
        }
    }
}

사진 찍기

카메라로부터 이미지를 캡처하기 위해서는 AVCapturePhotoOutput 클래스를 사용해야 합니다. 이 클래스를 사용하여 캡처 세션에 포토 아웃풋을 추가하고, 버튼을 터치했을 때 사진을 캡처하는 코드를 작성할 수 있습니다.

let photoOutput = AVCapturePhotoOutput()

if captureSession.canAddOutput(photoOutput) {
    captureSession.addOutput(photoOutput)
}

@IBAction func takePhotoButtonTapped(_ sender: UIButton) {
    let photoSettings = AVCapturePhotoSettings()
    photoOutput.capturePhoto(with: photoSettings, delegate: self)
}

위 코드에서 takePhotoButtonTapped 메서드는 버튼을 눌렀을 때 호출되는 메서드로, 여기에서 AVCapturePhotoOutput을 사용하여 사진을 캡처합니다.

이렇게 Swift를 사용하여 iOS 앱에서 카메라를 쉽게 사용할 수 있습니다. 간단한 예제 코드를 통해 카메라 접근 권한 요청, 카메라 뷰 구현, 사진 찍기 기능에 대한 구현 방법을 살펴보았습니다.

더 많은 기능을 구현하고 싶다면 Apple의 공식 문서를 참고하시기 바랍니다.