一:

ALAssetsGroupEnumerationResultsBlock resultsBlock = ^(ALAsset *result, NSUInteger index, BOOL *stop) {

if (result && [[result valueForProperty:ALAssetPropertyType] isEqual:ALAssetTypePhoto]) {

ZWPhoto *aPhoto = [[ZWPhoto alloc] initWithAsset:result];

aPhoto.checked = false;

aPhoto.originPhotoNeeded = false;

[self.photosArray addObject:aPhoto];

} else if (self.photosArray.count > 0) {

[self.collectionView reloadData];

}

};

[self.assetsGroup enumerateAssetsUsingBlock:resultsBlock];

二:

self.assetsLibrary = [[ALAssetsLibrary alloc] init];

dispatch_queue_t dispatchQueue =dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

dispatch_async(dispatchQueue, ^(void) {

// 遍历所有相册

[self.assetsLibrary enumerateGroupsWithTypes:ALAssetsGroupAll

usingBlock:^(ALAssetsGroup *group, BOOL *stop) {

// 遍历每个相册中的项ALAsset

[group enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index,BOOL *stop) {

__block BOOL foundThePhoto = NO;

if (foundThePhoto){

*stop = YES;

}

// ALAsset的类型

NSString *assetType = [result valueForProperty:ALAssetPropertyType];

if ([assetType isEqualToString:ALAssetTypePhoto]){

foundThePhoto = YES;

*stop = YES;

ALAssetRepresentation *assetRepresentation =[result defaultRepresentation];

CGFloat imageScale = [assetRepresentation scale];

UIImageOrientation imageOrientation = (UIImageOrientation)[assetRepresentation orientation];

dispatch_async(dispatch_get_main_queue(), ^(void) {

CGImageRef imageReference = [assetRepresentation fullResolutionImage];

// 对找到的图片进行操作

UIImage *image =[[UIImage alloc] initWithCGImage:imageReference scale:imageScale orientation:imageOrientation];

_myImageView = [[UIImageView alloc] initWithFrame:CGRectMake(100, 100, 200, 200)];

_myImageView.image = image;

[self.view addSubview:_myImageView];

if (image != nil){

//获取到第一张图片

} else {

NSLog(@"Failed to create the image.");

} });

}

}];

}

failureBlock:^(NSError *error) {

NSLog(@"Failed to enumerate the asset groups.");

}];

});

ALAssets的两种用法的更多相关文章

  1. c++ operator操作符的两种用法:重载和隐式类型转换,string转其他基本数据类型的简洁实现string_cast

    C++中的operator主要有两个作用,一是操作符的重载,一是自定义对象类型的隐式转换.对于操作符的重载,许多人都不陌生,但是估计不少人都不太熟悉operator的第二种用法,即自定义对象类型的隐式 ...

  2. operator 的两种用法

    C++,有时它的确是个耐玩的东东,就比如operator,它有两种用法,一种是operator overloading(操作符重载),一种是operator casting(操作隐式转换).1.操作符 ...

  3. Service的两种用法及其生命周期

    先来一点基础知识: Service 是android的四大组件之一,与Activity同属于一个级别,它是运行在后台进行服务的组件(例如在后台播放的音乐,播放音乐的同时并不影响其他操作).Servic ...

  4. JSP中的include的两种用法

    1.两种用法 <%@ include file=” ”%> <jsp:include page=” ” flush=”true”/> 2.用法区别 (1)执行时间上区别 < ...

  5. 子查询。ANY三种用法。ALL两种用法。HAVING中使用子查询。SELECT中使用子查询。

    子查询存在的意义是解决多表查询带来的性能问题. 子查询返回单行多列: ANY三种用法: ALL两种用法: HAVING中的子查询返回单行单列: SELECT中使用子查询:(了解就好,避免使用这种方法! ...

  6. Comparable和Comparator的区别&Collections.sort的两种用法

    在Java集合的学习中,我们明白了: 看到tree,可以按顺序进行排列,就要想到两个接口.Comparable(集合中元素实现这个接口,元素自身具备可比性),Comparator(比较器,传入容器构造 ...

  7. in有两种用法:

    # in有两种用法: 1. 在for中. 是把每一个元素获取到赋值给前⾯的变量. 2. 不在for中. 判断xxx是否出现在str中. #len() 为内置函数,输出为1,2,3,4....., 长度 ...

  8. [VC]C++ operator 两种用法

    C++中的operator,有两种用法,一种是operator overloading(操作符重载),一种是operator casting(操作隐式转换).下面分别进行介绍:   1.operato ...

  9. jsp中include的两种用法

    JSP中的include的两种用法 1.两种用法 <%@ include file=” ”%> <jsp:include page=” ” flush=”true”/> 2.用 ...

随机推荐

  1. Supervisor 守护 dotnetcore 程序

    版权声明:本文由屈政斌原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/240 来源:腾云阁 https://www.qclo ...

  2. Unity3D WebCamTexture 调用外部摄像头

    http://www.itnose.net/detail/6259004.html 一:Unity 中使用WebCamTexture 调用摄像头实现拍照和摄像. using UnityEngine; ...

  3. js将html5日期格式转为long型

    var moveInArray = $("#move_in").val().split('-'); var d = new Date(); d.setYear(moveInArra ...

  4. Wifi-Direct

    参考链接:http://developer.android.com/guide/topics/connectivity/wifip2p.html 国内镜像开发文档:http://wear.techbr ...

  5. mysql的小知识点(关于数据库的导入导出 对于windows)

    对于,一个存在的数据,我们该如何去打包成.sql属性的文件呢? 直接进行这两条语句: D:\Program Files\MySQL\mysql\bin>mysqldump -u root -p ...

  6. 注解配置springMvc及向作用域中赋值

    1.在applicationContext.xml中配置包扫描器 <!-- 使用注解配置扫描器 --> <context:component-scan base-package=&q ...

  7. 支持向量机的smo算法(MATLAB code)

    建立smo.m % function [alpha,bias] = smo(X, y, C, tol) function model = smo(X, y, C, tol) % SMO: SMO al ...

  8. mysql str_to_date字符串转换为日期

    mysql内置函数,在mysql里面利用str_to_date()把字符串转换为日期. 示例:分隔符一致,年月日要一致 select str_to_date('2008-4-2 15:3:28','% ...

  9. cms3.0——收获(1)

    或许是由于各个公司的情况不同,使得每次写后台管理系统就沿用之前的nodejs中的thinkjs来写后台管理系统,也是因为这样后期维护起来更加方便吧?不过最早之前的项目,却有一个使用的是nodejs 中 ...

  10. Linux创建LVM

    ###########format disk############ 格式化磁盘,将其SystemId修改为8e fdisk /dev/sdb n p 1 [enter] [enter] t 8e w ...