В настоящее время я пытаюсь создать приложение для камеры для развлечения и столкнулся с проблемой.
Я использовал пример, который Apple предоставляет вам для процесса съемки фото или видео. Найдено здесь:
https://developer.apple.com/library/content/samplecode/AVCam/Introduction/Intro.html
У меня проблема с использованием PhotoCaptureDelegate
. Итак, в настоящее время, когда пользователь делает фотографию, она сохраняется в библиотеке фотографий пользователя. Что я хотел бы сделать, так это то, что после того, как он сделает снимок, я хочу сохранить photoData
объект фотографии. Чтобы я мог отобразить фотографию на другом виде в качестве предварительного просмотра, прежде чем сохранить ее.
Это то, что Apple предлагает использовать:
func capture(_ captureOutput: AVCapturePhotoOutput, didFinishCaptureForResolvedSettings resolvedSettings: AVCaptureResolvedPhotoSettings, error: Error?) {
if let error = error {
print("Error capturing photo: \(error)")
didFinish()
return
}
guard let photoData = photoData else {
print("No photo data resource")
didFinish()
return
}
PHPhotoLibrary.requestAuthorization { [unowned self] status in
if status == .authorized {
PHPhotoLibrary.shared().performChanges({ [unowned self] in
let creationRequest = PHAssetCreationRequest.forAsset()
creationRequest.addResource(with: .photo, data: photoData, options: nil)
if let livePhotoCompanionMovieURL = self.livePhotoCompanionMovieURL {
let livePhotoCompanionMovieFileResourceOptions = PHAssetResourceCreationOptions()
livePhotoCompanionMovieFileResourceOptions.shouldMoveFile = true
creationRequest.addResource(with: .pairedVideo, fileURL: livePhotoCompanionMovieURL, options: livePhotoCompanionMovieFileResourceOptions)
}
}, completionHandler: { [unowned self] success, error in
if let error = error {
print("Error occurered while saving photo to photo library: \(error)")
}
self.didFinish()
}
)
}
else {
self.didFinish()
}
}
}
Как мне взять объект photoData
из моего делегата и передать его обратно в мой контроллер представления, который вызывает этот делегат?