如何解决如何从PHPickerViewController委托获取实时照片或视频
Apple的新iOS 14 PHPickerViewController委托仅接收一个NSItemProvider。 2020年WWDC视频显示了如何从那里到达UIImage:
let prov = result.itemProvider
prov.loadObject(ofClass: UIImage.self) { im,err in
if let im = im as? UIImage {
DispatchQueue.main.async {
// display the image here
但是,如果用户选择了实时照片或视频呢?我们怎么得到的?
解决方法
实时照片很容易;完全一样地做。您可以这样做,因为PHLivePhoto是一个类。所以:
let prov = result.itemProvider
prov.loadObject(ofClass: PHLivePhoto.self) { livePhoto,err in
if let photo = livePhoto as? PHLivePhoto {
DispatchQueue.main.async {
// display the live photo here
视频更难。问题是您不希望将数据交给您。它对您没有好处,而且可能很大。您希望将数据保存到磁盘,以便可以访问视频URL,就像UIImagePickerController过去那样。实际上,您可以要求项目提供者为您保存其数据,但是当完成处理程序返回时,它希望放弃该数据。我的解决方案是通过.sync
函数访问URL:
let prov = result.itemProvider
prov.loadFileRepresentation(forTypeIdentifier: UTType.movie.identifier) { url,err in
if let url = url {
DispatchQueue.main.sync {
// display the video here
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。