https://developer.apple.com/documentation/avfoundation/avcapturephotocapturedelegate
Methods for monitoring progress and receiving results from a photo capture output.
사진 캡처 아웃풋으로부터 진행상황을 모니터하고 결과를 받기 위한 메소드 집합입니다.
protocol AVCapturePhotoCaptureDelegate
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에 리스트로 나와있는 메소드의 경우 한 번 이상의 호출을 받거나 아예 호출을 받지 않을 수도 있으며, 사진 세팅에 따라 달라지게 됩니다. 세부사항은 각 메소드의 설명을 보시기 바랍니다.