iOS开发之AssetsLibrary框架使用详解

2020-01-21 07:12:33于海丽

5.ALAssetsFilter:相当于过滤器,有三个方法,allPhotos:获取相册中所有的照片.allVideos:获取相册中所有的视频.allAssets:获取照片库中的相册,通过ALAssetsGroup类中的setAssetsFilter来调用

三、ALAssetsLibrary资源库对象

ALAssetsLibrary类用来构建资源库对象,这个对象用来整体操作系统的相册资源,在使用它之前我们可以使用下面的方法来获取用户的授权情况:


+ (ALAuthorizationStatus)authorizationStatus;

ALAuthorizationStatus枚举定义了用户的授权情况,定义如下:


typedef NS_ENUM(NSInteger, ALAuthorizationStatus) {
  ALAuthorizationStatusNotDetermined, // 用户尚未选择是否授权
  ALAuthorizationStatusRestricted,  //应用尚未授权
  ALAuthorizationStatusDenied),    // 用户拒绝授权
  ALAuthorizationStatusAuthorized   // 用户已经授权
}

如果用户尚未授权过,那么任何访问操作都将触发授权机制。

资源库中的资源数据是以组的方式进行存储,下面代码示例了获取资源组的方式:


  _library = [[ALAssetsLibrary alloc]init];
  [_library enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
    if (group) { // 遍历相册还未结束
      // 设置过滤器
      [group setAssetsFilter:[ALAssetsFilter allPhotos]];
      if (group.numberOfAssets) {
        NSLog(@"%@",group);
      }
    } else { // 遍历结束(当group为空的时候就意味着结束)
      
        NSLog(@"没有相册列表了");
      
    }
    
  } failureBlock:^(NSError *error) {
    NSLog(@"失败");
  }];

上面示例的枚举函数用来根据参数类型获取资源组,ALAssetsGroupType参数决定获取组的类型,可选值枚举如下:


enum {
  ALAssetsGroupLibrary   ,// 编辑库
  ALAssetsGroupAlbum    ,//相册库
  ALAssetsGroupEvent    ,//事件库 
  ALAssetsGroupFaces    ,// iTunes同步
  ALAssetsGroupSavedPhotos ,// 保存的相片
  ALAssetsGroupPhotoStream ,// The PhotoStream album.
  ALAssetsGroupAll     ,//所有库
};