我需要用戶從那里的照片庫中選擇多張照片和視頻的能力。(使用 PHPicker)我已經知道如何獲取影像:
func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) {
var contentsData: [Data] = []
for result in results {
if result.itemProvider.canLoadObject(ofClass: UIImage.self) {
result.itemProvider.loadObject(ofClass: UIImage.self) { selectedData, error in
if let error = error {
print("PICKER ERROR: \(error)")
} else {
if let selectedImage = selectedData as? UIImage {
if let selectedImageData = selectedImage.jpegData(compressionQuality: 0.5) {
contentsData.append(selectedImageData)
if contentsData.count == results.count {
self.parent.completion(contentsData)
}
}
}
}
}
}
}
self.parent.presentationMode.wrappedValue.dismiss()
}
我假設我需要做的是檢查 PHPickerResult 的每個結果是什么資料型別,然后相應地加載每個物件。問題是視頻檔案可能是 .mov、.mp4 等。如何將 PHPickerResult 識別為視頻并進行相應處理?
uj5u.com熱心網友回復:
只需詢問專案提供者是否有型別的專案UTType.movie.identifier。如果是這樣,請繼續并通過呼叫加載它loadFileRepresentation(forTypeIdentifier: UTType.movie.identifier)。
實際代碼:
if prov.hasItemConformingToTypeIdentifier(UTType.movie.identifier) {
self.dealWithVideo(result)
} else if prov.canLoadObject(ofClass: PHLivePhoto.self) {
self.dealWithLivePhoto(result)
} else if prov.canLoadObject(ofClass: UIImage.self) {
self.dealWithImage(result)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/438924.html
