#pragma mark 相冊操作
- (void)getOriginalImages{
//獲取所有自定義相簿
PHFetchResult*assetCollections = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil];
//便利所有相冊簿
for (PHAssetCollection *assetCollection in assetCollections) {
[self enumerateAssetsInAssetCollection:assetCollection original:YES];
NSLog(@"相冊名%@",assetCollection.localizedTitle);
}
// PHAssetCollection *cameraRoll = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeSmartAlbumUserLibrary options:nil].lastObject;
// [self enumerateAssetsInAssetCollection:cameraRoll original:YES];
}
//獲取所有相冊中的縮略圖 //沒用
- (void)getThumbnailImages{
PHFetchResult*assetCollections = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil];
for (PHAssetCollection *assetCollection in assetCollections) {
[self enumerateAssetsInAssetCollection:assetCollection original:NO];
}
PHAssetCollection *cameraRoll = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeSmartAlbumUserLibrary options:nil].lastObject;
[self enumerateAssetsInAssetCollection:cameraRoll original:NO];
}
/* 遍歷相冊中的原圖 @param assetCollection 相冊 @param original 是否要原圖 */
- (void)enumerateAssetsInAssetCollection:(PHAssetCollection *)assetCollection original:(BOOL)original{
PHImageRequestOptions *options = [[PHImageRequestOptions alloc] init];
//同步獲得智慧返回一張 options.synchronous = YES;
//獲得某個相冊中所有的phasset對象
PHFetchResult*assets = [PHAsset fetchAssetsInAssetCollection:assetCollection options:nil];
// NSLog(@"圖片數量:%lu",(unsigned long)assets.count);
if(assets.count){
ZCCPhoneAlbumModel *albumModel = [[ZCCPhoneAlbumModel alloc] init];
// NSLog(@"相冊名%@",assetCollection.localizedTitle);
//相冊名給對象
albumModel.photoAlbumName = assetCollection.localizedTitle;
NSMutableArray *picsArray = [NSMutableArray array];
for (PHAsset *asset in assets) {
// CGSize size = original ? CGSizeMake(asset.pixelWidth, asset.pixelHeight) : CGSizeZero;
//寬大于高 就把高變成 asset.pixelHeight * COLLECTIONWIDTH/asset.pixelHeight
CGFloat width = 0;
CGFloat height = 0;
//寬大于高 壓縮高
if(asset.pixelWidth > asset.pixelHeight){
width = asset.pixelWidth * COLLECTIONWIDTH/asset.pixelHeight;
height = COLLECTIONWIDTH;
}else{//寬小于高 壓縮寬
width = COLLECTIONWIDTH;
height = asset.pixelHeight * COLLECTIONWIDTH/asset.pixelWidth;
}
CGSize size = CGSizeMake(width, height);
//從asset中獲得圖片
[[PHImageManager defaultManager] requestImageForAsset:asset
targetSize:size
contentMode:PHImageContentModeDefault
options:options
resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) {
// NSLog(@"%@",result);
[picsArray addObject:result];
}];
}
albumModel.photos = picsArray;
//把這個相冊對象添加到相冊數組中
[self.photoAlbums addObject:albumModel];
}
}
其實這里可以通過 打開collectionView獲取contentoffsize來判斷當前滑動位置 然后 加載 總圖片的對應階段圖片 邊滑動邊加載 這樣就不會造成剛點開的卡頓了 有空實現一下。
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。