【 写在前面:笔者按照Instagram的图片选取器写了个小Demo,
该系列文章为笔者实现Demo的步骤,若有不正确的地方还望指出来,共同学习。
地址在最后】
iOS开发者对于图片选择器不会感到陌生,例如最常用的UIImagePicker就是系统提供的,可以实现简单的图片选取与编辑,当需要高度定制化的时候,就需要我们自己造轮子了。笔者就以Instagram为参考参考来造自己轮子。
当然,也能找到很多优秀的第三方,如:
MWPhotoBrowser:(https://github.com/mwaterfall/MWPhotoBrowser)
它是一个图片选取的框架,需要传入图片资源。我们的业务很多时候是直接取的系统的相册,而笔者造的轮子定位就是一个基于系统相册的自定义图片选择器。所以我们必须先了解下如何获取系统的图片资源。
在iOS 8以前想要与系统相册进行互动使用的是ALAsset,而在iOS9开始,苹果就不再推荐了。从iOS 8开始,苹果推出PhotoKit来取代ALAsset,PhotoKit还能够配合ICloud,且当下基本以iOS 8为最低版本,我们也就直接使用PhotoKit来进行开发。
使用选取器的基本的流程是(调用选取器->获取图片->展示图片->选取图片->回调并关闭),在实际流程中会有细节上的差异。
下面笔者会根据功能的先后,把主要使用到的方法依次列举出来。
1.权限的配置与获取
在iOS 10中需要添加额外的安全设定,否则程序会直接崩溃,我们用到了相册,所以需要在info.plist里添加NSPhotoLibraryUsageDescription的key值,其value为获取权限的描述,该描述会在设置中的相册权限展示。
要获取图片还要知道获取图片的权限是否开启,可调用以下方法:
[PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
/*当status等于PHAuthorizationStatusAuthorized表示用户已经授予了权限。
该方法在应用初次询问时,会直接弹出系统的权限询问,
用