iOS 中,系统相册的那些事

711 阅读1分钟
  • 自定义行相册的思路

      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 完成上述步骤后,就能获得所有相册和相册中对应的所有照片,接下来就可以根据自己的需求自定义显示界面了,这里就不再一一赘述了。