AssetsLibrary与Photos

首先附上寡人的demo:https://github.com/chengssir/TNNPhotoKitLibrary

随着iOS不断的升级,苹果这个不要脸的居然逐步的放弃了AssetsLibrary,提供给我们新的框架Photos(这是什么鬼?图片?)
因为框架的替换,苹果官方并没有提供我们AssetsLibrary被放弃方法的备用方案,由此我们需要去在项目集成Photos,下面我们来分析下:

AssetsLibrary

ALASSetsGroupType: 类型

ALAssetsGroupLibrary//从iTunes来的相册内容(如本身自带的向日葵照片)。
ALAssetsGroupAlbum//设备自身产生或从iTunes同步来的照片,但是不包括照片流跟分享流中的照片。(例如从各个软件中保存下来的图片)ALAssetsGroupEvent相机接口事件产生的相册
ALAssetsGroupFaces//脸部相册(具体不清楚)
ALAssetsGroupSavedPhotos//相机胶卷照片
ALAssetsGroupPhotoStream//照片流
ALAssetsGroupAll//除了ALAssetsGroupLibrary上面所的内容

AssetsLibrary获取文件夹

 [self.imagePickerController.assetsLibrary enumerateGroupsWithTypes:[typeunsignedIntegerValue]
                                                       usingBlock:^(ALAssetsGroup*assetsGroup,BOOL*stop) {
                                                       }failureBlock:^(NSError*error) {
                                                           NSLog(@"Error: %@", [errorlocalizedDescription]);
                                                       }]

获取图片

[self.assetsGroup enumerateAssetsUsingBlock:^(ALAsset*result,NSUIntegerindex,BOOL*stop) {
if(result) {
    [assetsaddObject:result];
 }
}];

[self.assetsGroup enumerateAssetsAtIndexes:indexesoptions:0usingBlock:^(ALAsset*result,NSUIntegerindex,BOOL*stop) {
}];

Photos

Photos类型

PHAssetCollectionSubtypeAlbumRegular//用户在Photos中创建的相册,也就是我所谓的逻辑相册
PHAssetCollectionSubtypeAlbumSyncedEvent//使用iTunes从Photos照片库或者iPhoto照片库同步过来的事件。然而,在iTunes 12以及iOS 9.0 beta4上,选用该类型没法获取同步的事件相册,而必须使用AlbumSyncedAlbum。
PHAssetCollectionSubtypeAlbumSyncedFaces//使用iTunes从    Photos照片库或者iPhoto照片库同步的人物相册。
PHAssetCollectionSubtypeAlbumSyncedAlbum//做了AlbumSyncedEvent应该做的事
PHAssetCollectionSubtypeAlbumImported//从相机或是外部存储导入的相册,完全没有这方面的使用经验,没法验证。
PHAssetCollectionSubtypeAlbumMyPhotoStream//用户的iCloud照片流
PHAssetCollectionSubtypeAlbumCloudShared//用户使用iCloud共享的相册
PHAssetCollectionSubtypeSmartAlbumGeneric//文档解释为非特殊类型的相册,主要包括从iPhoto同步过来的相册。由于本人的iPhoto已被Photos替代,无法验证。不过,在我的iPad mini上是无法获取的,而下面类型的相册,尽管没有包含照片或视频,但能够获取到。
PHAssetCollectionSubtypeSmartAlbumPanoramas//相机拍摄的全景照片
PHAssetCollectionSubtypeSmartAlbumVideos//相机拍摄的视频
PHAssetCollectionSubtypeSmartAlbumFavorites//收藏文件夹
PHAssetCollectionSubtypeSmartAlbumTimelapses//延时视频文件夹,同时也会出现在视频文件夹中
PHAssetCollectionSubtypeSmartAlbumAllHidden//包含隐藏照片或视频的文件夹
PHAssetCollectionSubtypeSmartAlbumRecentlyAdded//相机近期拍摄的照片或视频
PHAssetCollectionSubtypeSmartAlbumBursts//连拍模式拍摄的照片,在iPad mini上按住快门不放就可以了,但是照片依然没有存放在这个文件夹下,而是在相机相册里。
PHAssetCollectionSubtypeSmartAlbumSlomoVideos//Slomo是slow motion的缩写,高速摄影慢动作解析,在该模式下,iOS设备以120帧拍摄。不过我的iPad mini不支持,没法验证。
PHAssetCollectionSubtypeSmartAlbumUserLibrary//这个命名最神奇了,就是相机相册,所有相机拍摄的照片或视频都会出现在该相册中,而且使用其他应用保存的照片也会出现在这里。
PHAssetCollectionSubtypeAny//包含所有类型

Photos文件集合:

PHFetchResult *smartAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeAny options:nil];
 
PHFetchResult *userAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAny options:nil];

PHAssetCollection文件夹

[userAlbums enumerateObjectsUsingBlock:^(PHAssetCollection*assetCollection,NSUIntegerindex,BOOL*stop) {
[assetCollectionsaddObject:assetCollection];
}];

获取图片

[[PHImageManager defaultManager] requestImageForAsset:fetchResult[fetchResult.count-3] targetSize:CGSizeScale(cell.imageView3.frame.size,     [[UIScreenmainScreen]scale]) contentMode:PHImageContentModeAspectFill options:nil resultHandler:^(UIImage*result,NSDictionary*info) {
if(cell.tag== indexPath.row) {
  cell.imageView3.image= result;
}
}];

你可能感兴趣的:(AssetsLibrary与Photos)