照片框架工作异常。

Posted

技术标签:

【中文标题】照片框架工作异常。【英文标题】:Photos framework working abnormally. 【发布时间】:2015-10-02 13:31:38 【问题描述】:

我正在使用照片框架从相机胶卷中选择照片。从网格中选择资产后,我使用 PHImageManager 访问每个选定的图像,然后将这些图像存储在数组中以显示在我的集合视图中。

我正在使用这段代码来实现:-

-(void)extractFullSizeImagesFromAssets

    PHImageRequestOptions* options = [[PHImageRequestOptions alloc] init];
    options.version = PHImageRequestOptionsVersionCurrent;
    options.deliveryMode =  PHImageRequestOptionsDeliveryModeHighQualityFormat;
    options.resizeMode = PHImageRequestOptionsResizeModeExact;
    options.networkAccessAllowed =  TRUE;



    for (int i = 0; i < self.assets.count; i++) 
        PHAsset * asset = [self.assets objectAtIndex:i];
        CGSize fullSizeImage = CGSizeMake(1000, (asset.pixelHeight / asset.pixelWidth) * 1000);


        [[PHImageManager defaultManager] requestImageForAsset:asset
                                   targetSize:fullSizeImage
                                  contentMode:PHImageContentModeAspectFit
                                      options:options
                                resultHandler:^(UIImage *image, NSDictionary *info)
                                   // [self.arr_images addObject:image];
                                    [_arr_fullSizeImages addObject:image];

        ];

    
 

现在我的数组“arr_fullSizeImages”包含提取的图像,其随机顺序与我在拾取资产时选择的方式不同。例如,如果我从相机胶卷中选择了 5 张图像,那么有时在相机胶卷索引 3 处的选定图像会保存在 arr_fullSizeImages 中的索引 5 上。 我无法追踪这种行为的原因。请指出错误的根源以及如何解决此错误。

谢谢。

【问题讨论】:

【参考方案1】:

这是requestImageForAsset 默认异步执行的预期行为。 如果您想要同步行为(并且没有随机顺序),只需设置

options.synchronous = YES;

【讨论】:

以上是关于照片框架工作异常。的主要内容,如果未能解决你的问题,请参考以下文章

java中异常这种技术框架是怎么工作的?

Spring框架的圆形视图路径异常

照片框架崩溃:“不允许此应用程序访问照片数据。”

在 iOS 8 中删除专辑后 AssetsLibrary 框架无法正常工作

extjs框架工作原理

当存在多个网络接口时,可访问性框架在检测接口类型时无法正常工作