照片框架工作异常。
Photos framework working abnormally.
我正在使用照片框架 select 来自相机胶卷的照片。 select 从网格中获取资产后,我使用 PHImageManager 访问每个 selected 图像,然后将这些图像存储在数组中以显示在我的集合视图中。
我正在使用这段代码来实现:-
-(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" 包含提取的图像,其随机顺序与我 select 在拾取资产时的顺序不同。例如,如果我从相机胶卷中 selected 了 5 张图像,那么有时 selected 图像在相机胶卷中的索引 3 会保存在 arr_fullSizeImages 中的索引 5 中。
我无法追踪此行为的原因。请指出错误的来源以及如何解决此错误。
谢谢。
这是预期的行为,因为 requestImageForAsset
默认情况下异步执行。
如果您想要同步行为(并且没有随机顺序),只需设置
options.synchronous = YES;
我正在使用照片框架 select 来自相机胶卷的照片。 select 从网格中获取资产后,我使用 PHImageManager 访问每个 selected 图像,然后将这些图像存储在数组中以显示在我的集合视图中。
我正在使用这段代码来实现:-
-(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" 包含提取的图像,其随机顺序与我 select 在拾取资产时的顺序不同。例如,如果我从相机胶卷中 selected 了 5 张图像,那么有时 selected 图像在相机胶卷中的索引 3 会保存在 arr_fullSizeImages 中的索引 5 中。 我无法追踪此行为的原因。请指出错误的来源以及如何解决此错误。
谢谢。
这是预期的行为,因为 requestImageForAsset
默认情况下异步执行。
如果您想要同步行为(并且没有随机顺序),只需设置
options.synchronous = YES;