這裏用到的框架爲AssetsLibrary.framework,資源庫,
#import <AssetsLibrary/ALAsset.h> //圖片的基本信息
#import <AssetsLibrary/ALAssetsFilter.h> //Group的過濾器,記住,只能生效一個
#import <AssetsLibrary/ALAssetsGroup.h>//獲取相冊
#import <AssetsLibrary/ALAssetsLibrary.h>//額 整個類庫的管理類吧
#import <AssetsLibrary/ALAssetRepresentation.h> //圖片的詳細信息
我這邊簡單的封裝了一下,大致的流程就是先獲取相冊,然後再獲取相冊中的照片,比較簡單,直接上代碼吧
- (NSMutableDictionary *)detailGroups { if (!_detailGroups) { _detailGroups = @{}.mutableCopy; } return _detailGroups; } - (ALAssetsLibrary *)library { if (!_library) { _library = [[ALAssetsLibrary alloc]init]; } return _library; } - (NSMutableArray *)assesGroups { if (!_assesGroups) { _assesGroups = @[].mutableCopy; } return _assesGroups; } + (LIUAsset *)shareAsset { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ _shareAsset = [[LIUAsset alloc]init]; }); return _shareAsset; } - (void)releaseObj { if (_shareAsset) { _shareAsset = nil; } } ///獲取所有的分組 - (void)getAssetsGroups:(GetAssetsGroupsBlock)assetsGroup { if (self.assesGroups.count != 0) { if (assetsGroup) { assetsGroup(self.assesGroups.copy); return; }; } [self.library enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) { //只需要photo ALAssetsFilter *onlyPhotos = [ALAssetsFilter allPhotos]; if (group) { [group setAssetsFilter:onlyPhotos]; if ([group numberOfAssets] > 0) { [self.assesGroups addObject:group]; } }else { //這裏本來應該是要按照*stop來判斷的,貌似調試的時候發現這個stop一直是no,但是有一個參考的是這裏的group當是最後一個的時候 會是nil,就根據這個判斷吧 if (assetsGroup) { assetsGroup(self.assesGroups.copy); return; } } } failureBlock:^(NSError *error) { }]; } ///獲取分組所有的alasset - (void)getAllAssetsByGroup:(ALAssetsGroup *)group Finish:(GetAssetsBlock)finish{ NSString *groupName = [group valueForProperty:ALAssetsGroupPropertyName]; __block NSMutableArray *allAssets = [self.detailGroups objectForKey:groupName]; if (allAssets) { //返回數據了 if (finish) { finish(allAssets.copy); } return; } //如果沒有數據 allAssets = @[].mutableCopy; [group enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) { //不知道爲什麼這裏的stop顯示不對呀 if (result) { [allAssets addObject:result]; }else { //先把數組保存到字典中 [self.detailGroups setObject:allAssets forKey:groupName]; if (finish) { finish(allAssets.copy); } return; } }]; } ///獲取全屏圖 - (UIImage *)getFullImageWitAsset:(ALAsset *)asset { return [UIImage imageWithCGImage:[[asset defaultRepresentation] fullScreenImage]]; } ///獲取縮略圖 - (UIImage *)getThumbImageWithAsset:(ALAsset *)asset { return [UIImage imageWithCGImage:[asset thumbnail]]; }
ios 8以後,蘋果就捨棄了這個類庫,新建了一個photos類,下次有空再整理一下這個類庫的