#import "ViewController.h"
#import <AssetsLibrary/AssetsLibrary.h> /**
* ALAssetsLibrary.h 代表资源库(所有的视频,照片)
ALAssetsGroup.h 代表资源库中的相册
ALAsset.h 代表相册中一个视频或者一张照片
ALAssetRepresentation.h 代表一个资源的描述,可以获取到原始图片
*/ @interface ViewController () @property (weak, nonatomic) IBOutlet UICollectionView *collectionView; @property (nonatomic,strong)NSMutableArray *array;
@end @implementation ViewController{ ALAssetsLibrary *library; } - (void)viewDidLoad {
[super viewDidLoad]; //创建可变数组,存储资源文件
_array = [NSMutableArray array]; //创建资源库,用于访问相册资源
library = [[ALAssetsLibrary alloc] init]; //遍历资源库中所有的相册,有多少个相册,usingBlock会调用多少次
[library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *group, BOOL *stop) { //如果存在相册,再遍历
if (group) { //遍历相册中所有的资源(照片,视频)
[group enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) { /*
资源的索引
if (index == 2) { //停止遍历
*stop = YES;
}
*/ if (result) {
//将资源存储到数组中
[_array addObject:result];
} }];
} //刷新_collectionView reloadData;
[_collectionView reloadData]; } failureBlock:^(NSError *error) { NSLog(@"访问失败");
}]; } #pragma mark -UICollectionViewDelegate //行的个数
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { return _array.count; } //创建UICollectionViewCell
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { //如果单元格是在故事版中画出来的,不需要注册,需要在单元格中指定标识符
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath]; //取得图片视图
UIImageView *imgView = (UIImageView *)[cell.contentView viewWithTag:]; //取出对应的资源数据
ALAsset *result =_array[indexPath.row]; //获取到缩略图
CGImageRef cimg = [result thumbnail]; //转换为UIImage
UIImage *img = [UIImage imageWithCGImage:cimg]; //显示图片
imgView.image = img; /**
* 获取到原始图片
ALAssetRepresentation *presentation = [result defaultRepresentation]; CGImageRef resolutionImg = [presentation fullResolutionImage];
*/ return cell; } //单元格大小
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{ return CGSizeMake(, ); }

AssetsLibrary 实现访问相册,选取多张照片显示的更多相关文章

  1. swift3.0 从相册选取或者拍照上传图片至阿里云OSS

    导入相应的库 import Photos import AliyunOSSiOS 选取照片需要继承 UIImagePickerControllerDelegate,UINavigationContro ...

  2. 关于Xcode7.2版本访问相册问题

    前些天自己将xcode升级到7.2版本后,在我写的代码中有需要访问到相册的功能,但是却发现被告知无权限 一开始以为是手机问题,在设置里面找也没有找到,然后看代码,但是代码也没问题,后来才发现是我的pl ...

  3. C# 之 读取Word时发生 “拒绝访问” 及 “消息筛选器显示应用程序正在使用中” 异常的处理

    1.Asp.net中建立Microsoft.Office.Interop.Word.Application时出现 “ 拒绝访问 ” 错误 项目中要实现在服务器端打开一个Word模版文件,修改其内容后再 ...

  4. android4.0 的图库Gallery2代码分析(四) 之相册的数据处理以及显示

    最近迫于生存压力,不得不给人兼职打工.故在博文中加了个求点击的链接.麻烦有时间的博友们帮我点击一下.没时间的不用勉强啊.不过请放心,我是做技术的,肯定链接没病毒,就是我打工的淘宝店铺.嘻嘻.http: ...

  5. andorid下从相册选取/拍照选取一张相片并剪切

    http://www.2cto.com/kf/201401/270144.html 在Android编程中,从相册选取或是拍照选取一张照片然后对其进行剪切的需求非常的多 之前的一篇文章只说到如何从相册 ...

  6. 杂记-格式化Date默认格式,日期加一天,jstl判断字符类型,ajax模拟from表单后台跳转页面,jstl访问数据库并在页面显示

    1.格式化Date默认格式 String str="Sun Oct 08 22:36:45 CST 2017"; SimpleDateFormat sdf = new Simple ...

  7. iOS从手机相册选择一张照片并显示 Objective-C

    要先给app设置访问相册的权限: 在项目的Info.plist文件里添加Privacy - Photo Library Usage Description权限 ViewController.h: #i ...

  8. iOS11访问相册权限变更问题

    手机升到iOS 11后  发现之前正常的图片保存功能无法正常使用  会闪退 经测试发现应该是权限没有开启的原因  但是NSPhotoLibraryUsageDescription已经写入plist   ...

  9. python统计apache、nginx访问日志IP访问次数并且排序(显示前20条)【转】

    前言:python统计apache.nginx访问日志IP访问次数并且排序(显示前20条).其实用awk+sort等命令可以实现,用awk数组也可以实现,这里只是用python尝试下.   apach ...

随机推荐

  1. django-haystack 安装No local packages or working download links found for setuptools_scm

    在虚拟环境中安装drf-haystack时,pip报错 Liang-2:~ langying$ pip install django-haystack Collecting django-haysta ...

  2. 51、[源码]-Spring容器创建-容器创建完成

    51.[源码]-Spring容器创建-容器创建完成 12.finishRefresh();完成BeanFactory的初始化创建工作:IOC容器就创建完成: 1).initLifecycleProce ...

  3. svn优点跟缺点?

    优点: 1.svn优点:集中式管理,管理方式在服务端配置好,客户端只需要同步提交即可,使用方便,操作简单,很容易就可以上手 2.在服务端统一控制好访问权限,利用代码的安全管理. 3.所有的代码以服务端 ...

  4. HTML 002 基础

    HTML 基础- 4个实例 HTML 标题 HTML 标题(Heading)是通过<h1> - <h6> 标签来定义的. 实例 <h1>这是一个标题</h1& ...

  5. 剖析生产系统的I/O模式

    剖析生产系统的I/O模式 2019/02/13 vmunix 了解I/O的特点对于优化系统性能非常重要,I/O是顺序的还是随机的,是读操作还是写操作,读写的比例是多少,I/O数据块的大小,这些都是影响 ...

  6. java文件上传下载组件

    需求: 支持大文件批量上传(20G)和下载,同时需要保证上传期间用户电脑不出现卡死等体验: 内网百兆网络上传速度为12MB/S 服务器内存占用低 支持文件夹上传,文件夹中的文件数量达到1万个以上,且包 ...

  7. luogu 2152

    SuperGcd 二进制算法 1. A = B, Gcd(A, B) = A; 2. A,B为偶数,  Gcd(A, B) = 2 * Gcd(A / 2, B / 2); 3. A 为偶数, B 为 ...

  8. 10月清北学堂培训 Day 5

    今天是廖俊豪老师的讲授~ T1 第一次想出正解 30 pts: k <= 10,枚举如何把数放到矩阵中,O ( k ! ): 100 pts: 对于矩阵的每一列,我们二分最小差异值,然后贪心去判 ...

  9. c++ 字符串转数字

    #字符串转整数 string ss="-99"; cout<< stoi(ss)<<endl;

  10. Jedis API操作redis数据库

    1.配置文件 classpath路径下,新建redis.properties配置文件 配置文件内容 # Redis settings redis.host=127.0.0.1 redis.port=6 ...