iOS PhotoKit的使用

你还在用ALAssetsLibrary吗?

 

iOS 8开始,苹果就推出了PhotoKit这个框架来替代ALAssetsLibrary,作为用来对手机相册的访问和管理接口。

 

由于PhotoKit的使用和原来的ALAssetsLibrary有很大的区别,新手刚使用可能会不太适应,所以苹果开发者官网也出了个小的demo用来示范PhotoKit的使用,我觉得这个demo非常好,相比于网上乱七八糟的教程能让你更快地上手,详见官网demoSwift版本)地址:https://developer.apple.com/library/content/samplecode/UsingPhotosFramework/Introduction/Intro.html

 

下面说一说PhotoKit的简单使用。

 

PhotoKit里面主要包含这几个概念:

 

PHFetchResult -> PHCollectionList ->PHCollection -> PHAssetCollection -> PHAsset -> PHImageManager

 

1. PHAsset表示相册里的一个资源,如一张图片或者一个视频。

2. PHAssetCollection表示一个相册或者时刻,可以是系统相册或者用户自定义的相册,PHCollection是它的父类。

3. PHCollectionList表示多个相册PHCollection的集合。

4. PHFetchResult是调用了PhotoKit提供的资源请求接口如fetchAssetCollectionsWithType函数,返回的请求结果,PHFetchResult是一个数组,里面的元素可以是PHAsset,也可以是PHCollection,在请求的使用可以用PHFetchOptions定义请求参数,比如只请求视频类型或者图片类型,请求结果的排序方式等。

5. PHImageManager是对一个PHAsset进行请求以获取资源数据的接口,PHAsset里面只是资源的元数据,如图片信息,图片大小和创建日期等,当你要把图片load出来的时候就要用到PHImageManagerrequestImageForAsset来进行加载,可以通过参数来设置加载图片的大小尺寸等,另外使用PHCachingImageManager还可以进行缓存加载。

 

PhotoKit里面最常用的就是这几个概念,理解清楚了,使用起来就很简单。如:

 

加载智能相册列表:

 

 

获取一个相册:

 

 

拿到相册里的资源:

 

 

从拿到的资源PHAsset请求图片:

 

 

 

使用起来就是这么简单!

 

PhotoKitALAssetsLibrary好的地方在于:

 

1. ALAssetsLibrary获取某个资源都是通过遍历图片库所有资源查找的,效率低下;而PhotoKit是通过传入参数直接获取对应资源的,效率高,而且请求结果统一用PHFetchResult封装。

 

2. ALAssetsLibrary中相册(ALAssetGroup)和资源(ALAsset)是不同的对象,因此无法做到统一封装请求接口,而PhotoKit里面用PHFetchResult统一存储请求到的相册或资源对象,使用起来更统一更方便,对开发者更友好。

 

3. PhotoKit在返回资源结果时同时会返回资源的元数据如图片的很多信息(大小,创建时间,是否隐藏,是否收藏等),而获取元数据在ALAssetsLibrary里很难做到。

 

4. PhotoKit创建自定义相册很方便,同时也能管理iCloud里的资源。

 

上面只是对PhotoKit的一个简单介绍,更详细的使用和说明,一定要上苹果开发者网站查看!



欢迎关注我的微信公众号“鱼在云中游”(hcytalk)。

  

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值