美文网首页
自定义相册逻辑

自定义相册逻辑

作者: Alphts | 来源:发表于2016-08-20 19:04 被阅读76次

    Photos.framework的使用理解

    • PHPhotoLibrary 是一个资源库。能够获取相册权限以及对相册的操作

    • PHAssetCollection是一个资源集合对象,相当于一个相册的概念,通过类方法可以获得想要的相册集合.
      //获取最基本的智能分组
      //得到的smartGroups,就是相册集合,通过遍历可以获得相册
      PHFetchResult * smartGroups = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil];

    • PHFetchResult 是一个结果集,一个泛型类.通过方法获取到的相册或者资源组就是被封装成该类返回.通过遍历上述的smartGroups,可以得到PHAssetCollection的数组.
      //array就是相册集合
      NSMutableArray <PHAssetCollection > array = [NSMutableArray arrayWithCapacity:0];
      //通过遍历smartGroups,将得到的PHAssetCollection放入一个数组中
      [smartGroups enumerateObjectsUsingBlock:^(PHAssetCollection _Nonnull * obj, NSUInteger idx, BOOL * _Nonnull stop) {
      [array addObject:obj];
      }];
      //遍历得到的数组,将"相册胶卷"排列到数组的第一个,(大多数需求需要其排列在第一个)
      //PHAssetCollection对象的locaizedTitle等于Camera Roll,就是"相册胶卷"这个相册

    • 根据PHAssetCollection(group)得到PHFetchResult对象,某个相册中的所有照片资源
      //每一个PHAssetCollection对象相当于照片数组,通过将他转为PHFetchResult结果集,可以拿到每一个照片对象
      PHFetchResult *result= [PHAsset fetchAssetsInAssetCollection:group options:[[PHFetchOptions alloc]init]]

    • PHAsset 是一个独立的资源对象,可以通过类方法对PHCollection对象进行遍历,获得存放Asset对象的结果集,可以直接获得资源的规格数据,若想获得图片以及原图等资源,需要配合PHImageManager对象,继承自PHObject.
      //对上述result对象根据下标取的PHAsset对象,取出PHAsset中的image对象
      PHAsset *asset = (PHAsset *)[self.assets objectAtIndex:indexPath.row]
      [[PHCachingImageManager defaultManager]requestImageForAsset:asset targetSize:newSize contentMode:PHImageContentModeAspectFill options:nil resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) {
      //block回调,将image对象传出去
      }];

    相关文章

      网友评论

          本文标题:自定义相册逻辑

          本文链接:https://www.haomeiwen.com/subject/tisisttx.html