我正在升级我的GIF应用程序以使用iOS 8照片框架,基本上我希望在他们的照片库中找到所有用户的GIF并显示它们。在ALAssetLibrary图片库的“优化存储”发挥作用之前,iCloud图片库的工作非常好,因为现在用户可以在云中拥有大量的图像,因此需要使用Photos来获取它们,不幸的是,在您从云中下载它之前,您似乎无法判断PHAsset是GIF还是普通的静态映像……这会让我的应用在你没有网络连接或者网络连接差的时候变得很差劲.
这是我尝试只获取GIF的代码:
PHFetchOptions* fetchOptions = [[PHFetchOptions alloc] init];
fetchOptions.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:YES]];
PHFetchResult *allPhotosResult = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeImage options: fetchOptions];
// Get assets from the PHFetchResult object
[allPhotosResult enumerateObjectsUsingBlock:^(PHAsset *asset, NSUInteger idx, BOOL *stop) {
//NSLog(@"asset %@", asset);
PHImageRequestOptions* options = [[PHImageRequestOptions alloc] init];
options.synchronous = YES;
options.deliveryMode = PHImageRequestOptionsDeliveryModeFastFormat;
[imageManager requestImageDataForAsset: asset options: options resultHandler:^(NSData *imageData, NSString *dataUTI, UIImageOrientation orientation, NSDictionary *info) {
// when the item is in the cloud dataUTI is nil so I can't check what format it is...
}信息字典包含一些未记录的密钥:
PHImageResultDeliveredImageFormatKeyPHImageResultWantedImageFormat我见过的值为9999、9998和40xx。但它们似乎与图像是否是GIF没有特别的关系,所以必须与其他的东西完全相关.
有什么主意吗?
发布于 2015-06-03 18:50:53
看起来,在不从云中提取图像并检查之后,就没有办法解决这个问题。我正在更新我的应用程序,但是要记住PHAsset的localIdentifier上的每一张图片的类型,这样它只需要做一次。
如果您采用这种方法,您也可能希望避免PHAsset,因为它们代表突发、HDR或全景图像,因为它们不会是gifs (显然也不包括视频!)
发布于 2015-05-22 09:04:40
使用这个选项!
PHImageRequestOptions *options = [[PHImageRequestOptions alloc]init];
options.deliveryMode = PHImageRequestOptionsDeliveryModeHighQualityFormat;
options.networkAccessAllowed = YES;发布于 2015-06-18 11:45:58
有一个解决方案,但只针对IOS 9,他们添加了一个新的结构。
typedef NS_OPTIONS(NSUInteger, PHAssetSourceType) {
PHAssetSourceTypeNone = 0,
PHAssetSourceTypeUserLibrary = (1UL << 0),
PHAssetSourceTypeCloudShared = (1UL << 1),
PHAssetSourceTypeiTunesSynced = (1UL << 2),
} NS_AVAILABLE_IOS(9_0);也是
Added PHAssetResourceType [enum]
Added PHAssetResourceType.AdjustmentBasePhoto
Added PHAssetResourceType.AdjustmentData
Added PHAssetResourceType.AlternatePhoto
Added PHAssetResourceType.Audio
Added PHAssetResourceType.FullSizePhoto
Added PHAssetResourceType.FullSizeVideo
Added PHAssetResourceType.Photo
Added PHAssetResourceType.Videohttps://stackoverflow.com/questions/30367208
复制相似问题