您好,欢迎来到二三娱乐。
搜索
您的当前位置:首页PHAsset获取UIImage返回nil的问题

PHAsset获取UIImage返回nil的问题

来源:二三娱乐

PHAsset获取UIImage返回nil的问题

今天帮一个网友解决了这样一个问题 。他用photo框架,获取了一组图片资源的asset ,然后调用

- (PHImageRequestID)requestImageForAsset:(PHAsset *)asset targetSize:(CGSize)targetSize contentMode:(PHImageContentMode)contentMode options:(nullable PHImageRequestOptions *)options resultHandler:(void (^)(UIImage *__nullable result, NSDictionary *__nullable info))resultHandler;

获取图片,运行的时候,一般都是正常的 ,但是当取到相册中的某一张图的时候, result 就会返回 nil 。

具体的截图是这样的 。

photo
可以看出他获取了4个PHAsseat 。打印的都是正常的 。没有异常 ,然后循环的去取出对应的图片 。到了第三个的时候却返回了nil 。
首先我怀疑的是图片本事问题 。所以让他用 UIImagePicker 的方法获取这个图 。一下是截图 : UIImagePicker

我们看到,图片正确的返回了 。而且对比可以看到他的格式、大小、地址等等都是正常的 。

解决

那么问题是什么 。我们知道photo框架中一个asset就是一个图片资源的地址 。我们用地址就可以取出对应的图片 。但是苹果手机针对手机空间的有限性 ,提供了iCloud 云同步来解决图片视频等占用空间过大的问题 。所有,我们手机本地只需要存放云端图片的资源地址 ,需要时候的时候再去获取 。就节省了手机本地的存储空间 。但是在获取图片的方法中 ,默认却是关闭网络获取iCloud的图片的功能 。
if necessary will download the image from iCloud (client can monitor or cancel using progressHandler). Defaults to NO (see start/stopCachingImagesForAssets)

@property (nonatomic, assign, getter=isNetworkAccessAllowed) BOOL networkAccessAllowed; 
示例代码
PHImageRequestOptions *imageRequestOption = [[PHImageRequestOptions alloc] init];
 imageRequestOption.synchronous = YES;
  = YES;

Copyright © 2019- yule263.com 版权所有 湘ICP备2023023988号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务