PhotoKit简介
PhotoKit是一套比AssetsLibrary更为完整也更高效的库,对资源的处理与AssetsLibrary也有很大的不同。
首先介绍下几个概念:
1. PHAsset: 代表照片库中的一个资源,和ALAsset类似,通过PHAsset可以获取和保存资源
2. PHFetchOptions 获取资源时的参数,可以为nil(默认值)
3. PHFetchResult: 表示一系列的资源集合,也可以理解为相册集合
4. PHAssetCollection: 表示一个相册或者一个时刻、或者是一个智能相册(系统提供的特定的一系列相册,例如:最近删除,视频列表、收藏等等)
5. PHImageManager : 用于处理资源的加载,加载图片的过程带有缓存处理,可以通过传入一个PHImageRequestOptions控制资源的输出尺寸等规格
6. PHImageRequestOptions: 控制加载图片时的一系列参数
PhotoKit 相对于 AssetsLibrary 的三点重要改进:
1. AssetsLibrary中获取数据无论是相册好还是资源本质上都是使用枚举的方式遍历照片库取得相应地数据,而PhotoKit则是通过传入参数来直接获取相应的数据,因而效率得到提高
2. 在AssetsLibrary中,相册和资源是对应不同的对象(ALAssetGroup和ALAsset),因此在获取相册和获取资源时是使用的两个完全没有关联的接口。而PhotoKit中则有PHFetchResult这个可以统一存储相册或资源对象,因此处理系那个侧和资源时也比较方便
3. PhotoKit返回资源结果时,同时返回了资源的元数据,获取元数据在AssetsLibrary中是很难办到的一件事。而PhotoKit中同时通过PHAsset,开发者还能直接获取资源是否被收藏(favorite)和隐藏(hidden),拍摄图片时是否开启了HDR或全景模式,甚至能通过一张连拍图片获取到连拍图片中的其他图片。所以Photokit能更好地与设备照片库接入