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()一只报野指针 坑了好久。。现在代码里还有一处没有改好像。。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 五一劳动节,劳动者的节日。现在好多节日都已经失去了他本来的意义。所有的节日都被用来做休息,好好犒劳自己的时间。但是...
    柏家姓阅读 163评论 0 0
  • 今天心情美丽,天气也格外晴朗!原来心情真的可以改变天气!虽然保持不容易,但我要时刻提醒自己活在当下,快乐是自己的!...
    自由飞翔的我阅读 120评论 0 0
  • 中医是我国的传统医学,它承载着几千年来我国人民同疾病作斗争的实践经验和理论知识,可谓是我国传统文化中的一块璀...
    小狐女WSAQ5427阅读 554评论 0 0
  • 说迷茫应该要从前段时间晚上很火的一句话开始,她 道出了一类人,内心的真相。句子如下: “这辈子都没有过什么优越感,...
    孙晓晓阅读 334评论 0 1