Photos.framework的使用理解
PHPhotoLibrary 是一個資源庫瓢谢。能夠獲取相冊權(quán)限以及對相冊的操作
PHAssetCollection是一個資源集合對象,相當于一個相冊的概念,通過類方法可以獲得想要的相冊集合.
//獲取最基本的智能分組
//得到的smartGroups,就是相冊集合,通過遍歷可以獲得相冊
PHFetchResult * smartGroups = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil];PHFetchResult 是一個結(jié)果集,一個泛型類.通過方法獲取到的相冊或者資源組就是被封裝成該類返回.通過遍歷上述的smartGroups,可以得到PHAssetCollection的數(shù)組.
//array就是相冊集合
NSMutableArray <PHAssetCollection > array = [NSMutableArray arrayWithCapacity:0];
//通過遍歷smartGroups,將得到的PHAssetCollection放入一個數(shù)組中
[smartGroups enumerateObjectsUsingBlock:^(PHAssetCollection _Nonnull * obj, NSUInteger idx, BOOL * _Nonnull stop) {
[array addObject:obj];
}];
//遍歷得到的數(shù)組,將"相冊膠卷"排列到數(shù)組的第一個,(大多數(shù)需求需要其排列在第一個)
//PHAssetCollection對象的locaizedTitle等于Camera Roll,就是"相冊膠卷"這個相冊根據(jù)PHAssetCollection(
group
)得到PHFetchResult對象,某個相冊中的所有照片資源
//每一個PHAssetCollection對象相當于照片數(shù)組,通過將他轉(zhuǎn)為PHFetchResult結(jié)果集,可以拿到每一個照片對象
PHFetchResult *result= [PHAsset fetchAssetsInAssetCollection:group options:[[PHFetchOptions alloc]init]]PHAsset 是一個獨立的資源對象,可以通過類方法對PHCollection對象進行遍歷沼死,獲得存放Asset對象的結(jié)果集,可以直接獲得資源的規(guī)格數(shù)據(jù)敢茁,若想獲得圖片以及原圖等資源篡帕,需要配合PHImageManager對象,繼承自PHObject.
//對上述result對象根據(jù)下標取的PHAsset對象,取出PHAsset中的image對象
PHAsset *asset = (PHAsset *)[self.assets objectAtIndex:indexPath.row]
[[PHCachingImageManager defaultManager]requestImageForAsset:asset targetSize:newSize contentMode:PHImageContentModeAspectFill options:nil resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) {
//block回調(diào),將image對象傳出去
}];