AVCapturePhotoCaptureDelegate

Horus-iOS·2022년 5월 30일
0

https://developer.apple.com/documentation/avfoundation/avcapturephotocapturedelegate

Methods for monitoring progress and receiving results from a photo capture output.

사진 캡처 아웃풋으로부터 진행상황을 모니터하고 결과를 받기 위한 메소드 집합입니다.

Declaration

protocol AVCapturePhotoCaptureDelegate

Overview

AVCapturePhotoOutput 클래스를 사용해서 사진을 캡처할 때, 진행상황과 결과에 대한 정보를 받으려면 AVCapturePhotoCaptureDelegate에 있는 메소드를 구현해야 합니다.

사진을 캡처하려면 capturePhoto(with:delegate:) 메소드를 사용해서 이 프로토콜을 구현하고 있는 객체를 전달해야 하며, 캡처 요구사항(세팅) 역시 함께 전달해야 합니다. 캡처가 진행될 때 사진 아웃풋은 딜리게이트 객체에서 구현한 이 프로토콜의 몇 가지 메소드를 호출하며, 메소드 호출은 캡처의 진행상황 및 결과물(사진) 전달 정보를 제공하면서 호출됩니다.

어떤 딜리게이트 메소드가 호출될지는 캡처와 사진 세팅을 어떻게 구현했냐에 따라 달라집니다. 이 프로토콜에 있는 모든 메소드는 컴파일 시점에 옵셔널이지만, 딜리게이트 객체는 사진 세팅에 따라 런타임 시 특정 메소드에 대해서 응답해줘야 하는 것들이 있습니다.

  • 스틸 사진 캡처를 요청한 경우(이미지 형식 혹은 파일 타입을 구체화한 상태에서) 딜리게이트는 photoOutput(_:didFinishProcessingPhoto:error:) 메소드를 구현하거나 Receiving Capture Results(Deprecated)에 리스트로 나와있는 메소드 중 한 가지를 구현해야 합니다. 이 경우 요청한 방식에 따라 RAW 형식, 가공된 형식, 혹은 둘 모두에 상응하는 메소드여야 합니다.

  • 라이브 사진 캡처(livePhotoMovieFileURL 속성을 nil값이 아닌 것으로 설정)를 요청한 경우 딜리게이트는 photoOutput(_:didFinishProcessingLivePhotoToMovieFileAt:duration:photoDisplayTime:resolvedSettings:error:) 메소드를 구현해야 합니다.

캡처 아웃풋은 capturePhoto(with:delegate:) 메소드를 호출할 때 요구사항에 대한 타당성을 검증합니다. 딜리게이트가 요구사항을 충족시키지 못하면 해당 메소드는 예외를 반환합니다.

각 캡처 요청에 대해 고유한 AVCapturePhotoSettings 객체를 사용해야 합니다. 사진 아웃풋이 딜리게이트 메소드들을 호출할 때, 메소드는 AVCaptureResolvedPhotoSettings가 갖고 있는 uniqueID와 요청했던 캡처의 사진 세팅 고유 ID를 비교해 일치하는 것을 제공합니다. 여러 캡처를 만드는 경우 요청에 상응하는 딜리게이트 메소드를 결정할 수 있도록 고유 ID를 사용하시기 바랍니다.

사진 아웃풋은 항상 Monitoring Capture Progress에 리스트로 나와있는 각 메소드를 각 캡처 요청에 대해 정확히 한 번씩 호출합니다. Receiving Capture Results에 리스트로 나와있는 메소드의 경우 한 번 이상의 호출을 받거나 아예 호출을 받지 않을 수도 있으며, 사진 세팅에 따라 달라지게 됩니다. 세부사항은 각 메소드의 설명을 보시기 바랍니다.

0개의 댓글