Swift中实现相册的多选

在iOS中实现相册多选的思路是先从资源中拿出相片,然后放在collectionView中(也可以自己自定义随便的view,容器能放图就行)。然后实现在collectionView中多选就可以了。

要从系统中取得照片资源,需要用到 AssetsLibrary.framework 。它里面有取照片视频等资源的方法。

关于读取这些资源的方法,请前往ALAsset,ALAssetsLibrary,ALAssetsgroup常见属性及用法

这个应该是比较详细的了。

我自己也根据这个东西自己做了个多选相册的,抛砖引玉。希望大家给出更好的作品。效果如下:

相册多选

项目源码:https://github.com/smalldu/swiftPickMore

在做这个的时候,遇到一个坑,在这里和大家分享下。

非托管对象(Unmanaged Objects)
当 Swift 导入 unannotated 的APIs时,编译器将不会自动地对返回的 Core Foundation 对象进行内存管理托管。Swift 将这些返回的 Core Foundation 对象封闭在一个Unmanaged结构中。那些间接返回 Core Foundation 的对象也是非托管的。

而我这里就用到一个ALAsset对象的aspectRatioThumbnail方法返回Unmanaged对象,所以在这里使用takeUnretainedValue() 这个方法将它转换为内存管理的对象,刚开始一直用takeRetainedValue()一只报野指针 坑了好久。。现在代码里还有一处没有改好像。。

你可能感兴趣的:(Swift中实现相册的多选)