CBImagePicker:源码分析

375 查看

本开源库基于iOS8中PhotoKit框架制作,所以暂不支持iOS8以下版本,请谅解。另,在iOS10中,使用photoKit框架的应用可能会出现crash,但这个问题相信很快会被官方修复,请无需担心。

效果图

实际截图

以下是原Idea作者的Dribble:Photo Picker Interaction 地址和本人的GitHub:CBImagePicker地址,希望大家点击支持,再次感谢。

下面我们来仔细的分析,做这个库的完整过程。

第一部分 Category

整个库的制作用到了大量的坐标计算,所以我们很有必要写一个category来简化这一部分操作,我针对UIViewUIView+CBAddition类库和针对UIImageUIImage+CBAddition都是为了简化这一部分内容而做的工作。

大都以设置属性后自定义Getter和Setter的方式来进行,更详细代码请点击查看。

第二部分 ImagePicker(图片选择)

这个部分我们分小节来讲。

TitleView

TitleView分为两个View,第一个是Label,第二个则是UIImageView,这里使用了苹果原生NSLayoutConstraint来添加约束去限制两个View之间的位置和尺寸的关系,使用方法如下:

参数说明:

view1:设置的目标视图 attr1:设置的目标视图的属性 relation:目的视图和参照视图之间的关系view2:设置的参照视图 attr2:参照视图的参照属性 multiplier:目标视图属性和参照视图属性倍值 c:目标视图属性和参照视图属性差异值

CollctionView

相册获取

collection这个部分,主要是图片数据的申请,这里首先使用了PhotoKit来申请所有的相册列表,代码如下:

这里使用了一个数组存储所取到的所有相册列表,相册信息存储对象为PHAssetCollection

相册图片获取

而当我们取到相册信息之后,要从对应相册中取到我们所需要显示的图片,那么这里我们根据index从上面的数组中取出我们所需要的对应相册,遍历改相册,再利用方法requestImageForAsset来请求图片信息,方法如下: