iOS 开发之照片框架详解之二 —— PhotoKit 详解(下)
2016-04-12 10:04
465 查看
本文链接:http://kayosite.com/ios-development-and-detail-of-photo-framework-part-three.html
这里接着前文《iOS 开发之照片框架详解之二 —— PhotoKit 详解(上)》,主要是干货环节,列举了如何基于 PhotoKit 与 AlAssetLibrary 封装出通用的方法。
这里列举了四种常用的封装好的方法:原图,缩略图,预览图,方向,下面直接上代码,代码中有相关注释解释其中的要点。其中下面的代码中常常出现的 [[QMUIAssetsManager sharedInstance] phCachingImageManager] 是 QMUI 框架中封装的类以及单例方法,表示产生一个 PHCachingImageManager 的单例,这样做的好处是 PHCachingImageManager 需要占用较多的资源,因此使用单例可以避免无谓的资源消耗,另外请求图像等方法需要基于用一个 PHCachingImageManager 实例才能进行进度续传,管理请求等操作。
.h 文件
.m 文件
.h 文件
.m 文件
.h 文件
.m 文件
.h 文件
.m 文件
系列文章:
iOS 开发之照片框架详解
iOS 开发之照片框架详解之二 —— PhotoKit 详解(上)
iOS 开发之照片框架详解之二 —— PhotoKit 详解(下)
参考资料:
objc中国 - 照片框架
Example app using Photos framework
AssetsLibrary Framework Reference
这里接着前文《iOS 开发之照片框架详解之二 —— PhotoKit 详解(上)》,主要是干货环节,列举了如何基于 PhotoKit 与 AlAssetLibrary 封装出通用的方法。
三. 常用方法的封装
虽然 PhotoKit 的功能强大很多,但基于兼容 iOS 8.0 以下版本的考虑,暂时可能仍无法抛弃 ALAssetLibrary,这时候一个比较好的方案是基于 ALAssetLibrary 和 PhotoKit 封装出一系列模拟系统 Asset 类的自定义类,然后在其中封装好兼容 ALAssetLibrary 和 PhotoKit 的方法。这里列举了四种常用的封装好的方法:原图,缩略图,预览图,方向,下面直接上代码,代码中有相关注释解释其中的要点。其中下面的代码中常常出现的 [[QMUIAssetsManager sharedInstance] phCachingImageManager] 是 QMUI 框架中封装的类以及单例方法,表示产生一个 PHCachingImageManager 的单例,这样做的好处是 PHCachingImageManager 需要占用较多的资源,因此使用单例可以避免无谓的资源消耗,另外请求图像等方法需要基于用一个 PHCachingImageManager 实例才能进行进度续传,管理请求等操作。
1. 原图
由于原图的尺寸通常会比较大,因此建议使用异步拉取,但这里仍同时列举同步拉取的方法。这里需要留意如前文中所述,ALAssetRepresentation 中获取原图的接口 fullResolutionImage 所得到的图像并没有带上系统相册“编辑”(选中,滤镜等)的效果,需要额外获取这些效果并手工叠加到图像上。.h 文件
2. 缩略图
相对于在拉取原图时 ALAssetLibrary 的部分需要手工叠加系统相册的“编辑”效果,拉取缩略图则简单一些,因为系统接口拉取到的缩略图已经带上“编辑”的效果了。.h 文件
3. 预览图
与上面的方法类似,不再展开说明。.h 文件
4. 方向(imageOrientation)
比较奇怪的是,无论在 PhotoKit 或者是 ALAssetLibrary 中,要想获取到准确的图像方向,只能通过某些 key 检索所得。.h 文件
iOS 开发之照片框架详解
iOS 开发之照片框架详解之二 —— PhotoKit 详解(上)
iOS 开发之照片框架详解之二 —— PhotoKit 详解(下)
参考资料:
objc中国 - 照片框架
Example app using Photos framework
AssetsLibrary Framework Reference
相关文章推荐
- IOS中Json解析的四种方法,推荐使用原生解析,和jsonKit
- iOS 开发之照片框架详解之二 —— PhotoKit 详解(上)
- iOS 开发之照片框架详解
- iOS学习笔记19-地图(一)定位CoreLocation
- 联想杨天 S4130-12 win10改win7 bios参数设置
- iOS开发--浅谈CocoaAsyncSocket编程
- 【原】iOS动态性(五)一种可复用且解耦的用户统计实现(运行时Runtime)
- 【代码笔记】iOS-截屏功能
- IOS 图片转成黑白
- iOS学习笔记19-地图(一)定位CoreLocation
- WebRTC ON iOS
- 用用程序挂起、复原与终止 IOS
- iOS保存App中的照片到系统相册或自建相册的方法
- iOS 统一编码风格的四种有效办法
- 属性动画
- NSDictionary字典的使用
- iOS 上架(小问题)去除图像中的alpha通道或透明度
- ios学习路线-详细
- IOS学习笔记一
- iOS 一个简单的通讯录