iOS开发------简单实现图片多选功能(AssetsLibrary.framework篇)

AssetsLibrary.framework是iOS7.0之前用来获取手机所有的媒体资源的一个静态库,在iOS8.0之后完全可以用Photo.framework来代替,但因为涉及到适配iOS7,所以这个库用的还是比较多的。

实际上,多选图片有很多很好用的第三方,但找到一个完全符合自己需求的第三方也不是那么容易,就算找到,如果不懂,也不是很好修改代码才对,所以了解一下这个库也是很有必要的,这里就记录一下过程中的认识与问题。

如果小伙伴有什么好玩的库,还请介绍一下,很希望能和喜欢钻研技术的你们一起交流。
下面的内容是边看开发文档边研究使用,按自己的理解所写,如果出现错误,也请告知一下Thanks()

本文中的所有代码:https://github.com/YRunIntoLove/YAImagePickerView


类逻辑

研究一个库或者框架,总体逻辑一定是要缕清的,下面是个人的理解:
- ALAssetsLibrary 是一个资源库,所有的资源组最初都是从这个类的对象中获得.
- ALAssetsGroup 是一个资源组,里面包含了每个资源组的基本信息以及包含的所有资源,可以通过设置过滤器属性来选择自己想要的资源类型.
- ALAssetsFilter 是一个过滤器,比如需要从资源组中遍历出所有的资源,视频资源还是图片资源.
- ALAsset 是一个资源对象,里面可以取到组的信息,详细信息可以通过获取自身的详细对象来获取
- ALAssetRepresentation 是资源对象的详细信息,ALAsset的详细内容都存在这个类中,比如高清图就存在该对象中。


类库中的类及其属性方法

这里提到的都是代码中用到的属性和方法,如果只是为了多图选择,那么以下的方法应该是够用的,不够的话可以Command+单击进入开发文档查看即可。

ALAssetsLibrary

资源库对象:

/***相关类型***/
ALAssetsGroupLibrary        //从iTunes 来的相册内容(如本身自带的向日葵照片)
ALAssetsGroupAlbum          //设备自身产生或从iTunes同步来的照片,但是不包括照片流跟分享流中的照片。(例如从各个软件中保存下来的图片)
ALAssetsGroupEvent          //相机接口事件产生的相册
ALAssetsGroupFaces          //脸部相册(具体不清楚)
ALAssetsGroupSavedPhotos    //"相册胶卷"里面的照片
ALAssetsGroupPhotoStream    //照片流
ALAssetsGroupAll            //除了ALAssetsGroupLibrary上面所的内容
/*遍历相关类型的资源组*/
- (void)enumerateGroupsWithTypes:(ALAssetsGroupType)types
                      usingBlock:(ALAssetsLibraryGroupsEnumerationResultsBlock)enumerationBlock
                    failureBlock:(ALAssetsLibraryAccessFailureBlock)failureBlock;


ALAssetsGroup

资源组对象:

/***属性的key***/
extern NSString *const ALAssetsGroupPropertyName ;              //组的标题
extern NSString *const ALAssetsGroupPropertyType;               //组的类型
extern NSString *const ALAssetsGroupPropertyPersistentID ;      //组的代表ID
extern NSString *const ALAssetsGroupPropertyURL;                //该组在本地存储的位置url
//获取相关属性的方法,property的值从上面的属性key中取即可
- (id)valueForProperty:(NSString *)property;

//获取资源组的预览图
- (CGImageRef)posterImage;

//设置过滤器
- (void)setAssetsFilter:(ALAssetsFilter *)filter;

//当前组的资源数,如果设置了过滤对象,此数目就是过滤之后存储资源对象的个数
- (NSInteger)numberOfAssets;
/***遍历资源的方法***/

//遍历所有的资源
- (void)enumerateAssetsUsingBlock:(ALAssetsGroupEnumerationResultsBlock)enumerationBlock;

//根据类型遍历
- (
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值