自定义行相册的思路
1.实例化照片库,获取所有的相册;
2.展示相册中的所有照片,可自义展示样式,多以集合视图的形式展现;
3.选择照片后返回上级界面或者进入预览图。
具体实现
1.导入头文件** #import ** 或者 ** @import AssetsLibrary;**
2.实例化AssetsLibrary
**ALAssetsLibrary *assertLibray = [[ALAssetsLibrary alloc]init];**
3.遍历照片库所有的相册
groups = [NSMutableArray array];
//遍历相册
[assetLibrary enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
if (group) {//遍历相册未结束
//设置过滤器
[group setAssetsFilter:[ALAssetsFilter allPhotos]];
if (group.numberOfAssets) {
[groups addObject:group];
}
}else{//遍历结束
if (groups.count) {
//当相册个数不为零时,开始遍历相册
[self enumenumerateAssets];
}else{
NSLog(@"no group");
}
}
} failureBlock:^(NSError *error) {
if (error) {
NSLog(@"error = %@", [error description]);
}
}];
4.遍历相册中的照片
- (void)enumerateAssets{
NSMutableArray *assetArray = [NSMutableArray new];
for (ALAssetsGroup *group in groups) {
//遍历所有的照片-方式一
[group enumerateAssetsWithOptions:NSEnumerationReverse usingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {
if (result) {
[assetArray addObject:result];
}else{
NSLog(@"here is no photos");
}
}];
//遍历指定索引的照片-方式二
NSInteger fromIndex = 0;
NSInteger toIndex = 5;
[group enumerateAssetsAtIndexes:[NSIndexSet indexSetWithIndex:toIndex] options:NSEnumerationReverse usingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {
if (index > toIndex) {
*stop = YES;//遍历到最后一张,停止遍历
}else{
if (result) {
[assetArray addObject:result];//存储照片
}else{
NSLog(@"enumeration has ended!");
}
}
}];
}}
5 完成上述步骤后,就能获得所有相册和相册中对应的所有照片,接下来就可以根据自己的需求自定义显示界面了,这里就不再一一赘述了。