美文网首页
PhotoKit 开发遇到iCloud 原图获取的问题

PhotoKit 开发遇到iCloud 原图获取的问题

作者: 镜头下的涂鸦 | 来源:发表于2017-04-25 23:25 被阅读1441次

    首先列出我遇到的几个问题;

    1、缩略图的问题

    2、手机使用了iCloud 原图获取问题

    第一问题:

    对于缩略图的问题 我们使用PHImageRequestOptions 配置定制请求,返回裁剪过的图片

    normalizedCropRect 设置剪裁的大小

    options.resizeMode = PHImageRequestOptionsResizeModeExact;

    文档这样定义 在设置 normalizedCropRect 的时候 必须定义  resizeMode = PHImageRequestOptionsResizeModeExact;

    synchronous 属性是否同步 一般设置位异步的 防止线程阻塞

    networkAccessAllowed 如果手机开启了iCloud 这个设置开启才能获取到原始图片。

    deliveryMode 设置图片质量

    第二个问题:

    发现好多的应用都有这个问题。在开启icloud 的时候没法选取图片。

    注明:以下的图片获取都旨在获取原始图片

    如果你的手机开启了iCloud 并且你的照片同步到了云端。那么你如果想要获取原始图片就要从云端获取。

    networkAccessAllowed  这个属性设置开启的话,如果本地没有原始图片的话,就从iCloud 上获取原始图片。关闭的话那就拿不到这张图片的原始图片。

    synchronous 属性是否同步 。如果我们设置为异步(NO)的话(相册开发一般的都设置位异步) requestImageForAsset 请求会有两次回调。第一次返回一个低质量的图片,用于占位显示,第二次返回的是一个高质量的图(原图)。如果设置为同步的请求的话,就只有一次的回调,返回一个高质量的图(原图)

    所以我们开发相册的时候使用异步获取,这样体验更好,当要预览大图的时候,我们可以模仿ios 系统的做法,异步请求第一次获取低质量的图片用于占位显示,然后加一个小巧的精度条来加载大图。

    但是我们在选取图片的时候就要使用同步<你也可以在子线程中把这个任务加到同步队列中执行,这样的话你就可以加一个进度条等待>的方法中去做,为什么要这样做呢,这样就可以保证你选取的图是原图而不是模糊的低质量的图片了

    相关文章

      网友评论

          本文标题:PhotoKit 开发遇到iCloud 原图获取的问题

          本文链接:https://www.haomeiwen.com/subject/llfbzttx.html