iOS中通过AssetsLibrary来支持多图选择

AssetsLibrary框架提供了ALAssetsLibrary类来帮助我们访问相册程序管理下的照片和视频,官方文档见此。

if (!self.assetsLibrary) {
_assetsLibrary = [[ALAssetsLibrary alloc] init];
}

通过该框架,我们可以获取相册列表:
[_assetsLibrary enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
if (group) {
[self.groupArray addObject:group];
}
} failureBlock:^(NSError *error) {
NSLog(@"Group not found!n");
}];

通过点击每个相册,我们可以访问相册里的照片列表:
#pragma mark -

- (void)getImages
{
if (!self.assetsArray) {
_assetsArray = [[NSMutableArray alloc] init];
}

if (!self.assetsLibrary) {
_assetsLibrary = [[ALAssetsLibrary alloc] init];
}

@autoreleasepool {
[self.assetsGroup enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {
if (result) {
TTAsset *ttAsset = [[TTAsset alloc] initWithAsset:result];
[self.assetsArray addObject:ttAsset];
[ttAsset release], ttAsset = nil;
}
}];
}

[self.tableView reloadData];
}

最后,我们可以通过自定义的Cell来定制展示风格,比如选中效果、底部选中列表等。

时间: 2024-12-27 21:06:29

iOS中通过AssetsLibrary来支持多图选择的相关文章

iOS中sqlite数据库的原生用法_IOS

在iOS中,也同样支持sqlite.目前有很多第三方库,封装了sqlite操作,比如swift语言写的SQLite.swift.苹果官网也为我们封装了一个框架:CoreData. 它们都离不开Sqlite数据库的支持. 本文主要介绍下,如何在swift中使用原生的sqlite的API. 在Xcode中引入sqlite API 新建一个swift项目后,我们需要让项目引入sqlite的动态链接库: 1.项目配置界面,选择Build Phases 2.点开Link Binary With Libra

iOS中播放gif动态图的方式探讨

iOS中播放gif动态图的方式探讨 一.引言     在iOS开发中,UIImageView类专门来负责图片数据的渲染,并且UIImageView也有帧动画的方法来播放一组图片,但是对于gif类型的数据,UIImageView中并没有现成的接口提供给开发者使用,在iOS中一般可以通过两种方式来播放gif动态图,一种方式是通过ImageIO框架中的方法将gif文件中的数据进行解析,再使用coreAnimation核心动画来播放gif动画,另一种方式计较简单,可以直接通过webView来渲染gif图

求解,iOS中如何实现点击按钮切换按钮背景图,并且通过导航栏返回并再次进入后按钮还是那个背景图

问题描述 求解,iOS中如何实现点击按钮切换按钮背景图,并且通过导航栏返回并再次进入后按钮还是那个背景图 就是想在一个页面做一个收藏的按钮,如果用户点击按钮按钮的背景图就变成已收藏的背景图,并且保存这一状态,在下一次进入页面的时候还是已收藏的状态,求高手指点 解决方案 你这个没有数据交互么? 正常应该是用户点击收藏,然后后台提交,数据库响应成功后在回调里改变一下按钮状态和相应数据. 解决方案二: 你这个背景图片切换的数量多不?如果就2张图片来回切换,可以写个单例,记录下来你的点击状态,根据状态来

Android开发中实现IOS风格底部选择器(支持时间 日期 自定义)_Android

本文Github代码链接 https://github.com/AndroidMsky/AndoirdIOSPicker 先上图吧: 这是笔者最近一个项目一直再用的一个选择器库,自己也在其中做了修改,并决定持续维护下去. 先看使用方法: 日期选择: private void showDateDialog(List<Integer> date) { DatePickerDialog.Builder builder = new DatePickerDialog.Builder(this); bui

iOS中 流媒体播放和下载

      每日更新关注:http://weibo.com/hanjunqiang  新浪微博  iOS中关于流媒体的简介:介于下载本地播放与实时流媒体之间的一种播放形式,下载本地播放必须全部将文件下载完成后才能播放,而渐进式下载不必等到全部下载完成后再播放,它可以一边下载一边播放,在完成播放内容之后,整个文件会保存在手机上. 实时流媒体 实时流媒体是一边接收数据包一边播放,本地不保留文件副本,实时流式传输总是实时传送,可以实时实况转播,支持随机访问,用户可以快进或者快退以观看前面或后面的内容.

iOS开发系列--打造自己的“美图秀秀”

概述 在iOS中可以很容易的开发出绚丽的界面效果,一方面得益于成功系统的设计,另一方面得益于它强大的开发框架.今天我们将围绕iOS中两大图形.图像绘图框架进行介绍:Quartz 2D绘制2D图形和Core Image中强大的滤镜功能. Quartz 2D 基本图形绘制 视图刷新 其他图形上下文 Core Image Quartz 2D 在iOS中常用的绘图框架就是Quartz 2D,Quartz 2D是Core Graphics框架的一部分,是一个强大的二维图像绘制引擎.Quartz 2D在UI

iOS 中的 21 种设计模式

iOS 中的 21 种设计模式 对象创建原型(Prototype) 使用原型实例指定创建对象的种类,并通过复制这个原型创建新的对象. 1 2 NSArray *array = [[NSArray alloc] initWithObjects:@1, nil]; NSArray *array2 = array.copy; array 就是原型了,array2 以 array 为原型,通过 copy 操作创建了 array2. 当创建的实例非常复杂且耗时,或者新实例和已存在的实例值相同,使用原型模式

iOS中线程Call Stack的捕获和解析(一)

http://blog.csdn.net/jasonblog/article/details/49909209这里对上个月做的一个技术项目做部分技术小结,这篇文章描述的功能和我们在使用Xcode进行调试时点击暂停的效果类似. 一.获取任意一个线程的Call Stack 如果要获取当前线程的调用栈,可以直接使用现有API:[NSThread callStackSymbols]. 但是并没有相关API支持获取任意线程的调用栈,所以只能自己编码实现. 1. 基础结构 一个线程的调用栈是什么样的呢? 我

iOS中关于列表滚动流畅的一些探讨

本文讲的是iOS中关于列表滚动流畅的一些探讨,近些年,App 越来越推崇体验至上,随随便便乱写一通的话已经很难让用户买帐了,顺滑的列表便是其中很重要的一点.如果一个 App 的页面滚动起来总是卡顿卡顿的,轻则被当作反面教材来吐槽或者衬托"我们的 App balabala-",重则直接卸载.正好最近在优化这一块儿,总结记录下. 如果说有什么好的博客文章推荐,ibireme 的 iOS 保持界面流畅的技巧 这篇堪称业界毒瘤,墙裂推荐反复阅读.这篇文章中讲解了很多的优化点,我自己总结了下收益