首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从UIImagePickerController检索PHAsset

如何从UIImagePickerController检索PHAsset
EN

Stack Overflow用户
提问于 2017-07-08 02:16:02
回答 4查看 9.8K关注 0票数 15

我正在尝试检索一个PHAsset,但是iOS 8不推荐使用PHAsset.fetchAssets(带有withALAssetURLs:options:),那么我如何正确检索PHAsset呢?

EN

回答 4

Stack Overflow用户

发布于 2017-10-04 09:50:07

我也有同样的问题,首先检查权限并请求访问:

代码语言:javascript
复制
let status = PHPhotoLibrary.authorizationStatus()

if status == .notDetermined  {
    PHPhotoLibrary.requestAuthorization({status in

    })
}

只要把它连接到触发你的UIImagePickerController的任何东西上。委托调用现在应该在userInfo中包含PHAsset。

代码语言:javascript
复制
guard let asset = info[UIImagePickerControllerPHAsset] as? PHAsset
票数 20
EN

Stack Overflow用户

发布于 2018-12-05 14:19:25

以下是我的解决方案:

代码语言:javascript
复制
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {

        if #available(iOS 11.0, *) {
               let asset = info[UIImagePickerControllerPHAsset]

        } else {
               if let assetURL = info[UIImagePickerControllerReferenceURL] as? URL {
               let result = PHAsset.fetchAssets(withALAssetURLs: [assetURL], options: nil)
               let asset = result.firstObject
               }
       }
}
票数 6
EN

Stack Overflow用户

发布于 2020-04-07 04:21:55

除非用户已经授权,否则PHAsset不会出现在didFinishPickingMediaWithInfo: info结果中,这并不是我仅仅通过显示选择器就可以实现的。我在协调器init()中添加了以下内容:

代码语言:javascript
复制
            let status = PHPhotoLibrary.authorizationStatus()

            if status == .notDetermined  {
                PHPhotoLibrary.requestAuthorization({status in

                })
            }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44977292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档