1. 1 #import <AssetsLibrary/AssetsLibrary.h>
  2.  
  3. /**
  4. 6 * ALAssetsLibrary.h 代表资源库(所有的视频,照片)
  5. 7 ALAssetsGroup.h 代表资源库中的相册
  6. 8 ALAsset.h 代表相册中一个视频或者一张照片
  7. 9 ALAssetRepresentation.h 代表一个资源的描述,可以获取到原始图片
  8. 10 */
  9.  
  10. @interface ViewController ()
  11.  
  12. @property (weak, nonatomic) IBOutlet UICollectionView *collectionView;
  13.  
  14. @property (nonatomic,strong)NSMutableArray *array;
  15. @end
  16.  
  17. @implementation ViewController{
  18.  
  19. ALAssetsLibrary *library;
  20.  
  21. }
  22.  
  23. - (void)viewDidLoad {
  24. [super viewDidLoad];
  25.  
  26. //创建可变数组,存储资源文件
  27. _array = [NSMutableArray array];
  28.  
  29. //创建资源库,用于访问相册资源
  30. library = [[ALAssetsLibrary alloc] init];
  31.  
  32. //遍历资源库中所有的相册,有多少个相册,usingBlock会调用多少次
  33. [library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
  34.  
  35. //如果存在相册,再遍历
  36. if (group) {
  37.  
  38. //遍历相册中所有的资源(照片,视频)
  39. [group enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {
  40.  
  41. /*
  42. 44 资源的索引
  43. 45 if (index == 2) {
  44. 46
  45. 47 //停止遍历
  46. 48 *stop = YES;
  47. 49 }
  48. 50 */
  49.  
  50. if (result) {
  51. //将资源存储到数组中
  52. [_array addObject:result];
  53. }
  54.  
  55. }];
  56. }
  57.  
  58. //刷新_collectionView reloadData;
  59. [_collectionView reloadData];
  60.  
  61. } failureBlock:^(NSError *error) {
  62.  
  63. NSLog(@"访问失败");
  64. }];
  65.  
  66. }
  67.  
  68. #pragma mark -UICollectionViewDelegate
  69.  
  70. //行的个数
  71. - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
  72.  
  73. return _array.count;
  74.  
  75. }
  76.  
  77. //创建UICollectionViewCell
  78. - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
  79.  
  80. //如果单元格是在故事版中画出来的,不需要注册,需要在单元格中指定标识符
  81. UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath];
  82.  
  83. //取得图片视图
  84. UIImageView *imgView = (UIImageView *)[cell.contentView viewWithTag:];
  85.  
  86. //取出对应的资源数据
  87. ALAsset *result =_array[indexPath.row];
  88.  
  89. //获取到缩略图
  90. CGImageRef cimg = [result thumbnail];
  91.  
  92. //转换为UIImage
  93. UIImage *img = [UIImage imageWithCGImage:cimg];
  94.  
  95. //显示图片
  96. imgView.image = img;
  97.  
  98. /**
  99. 102 * 获取到原始图片
  100. 103 ALAssetRepresentation *presentation = [result defaultRepresentation];
  101. 104
  102. 105 CGImageRef resolutionImg = [presentation fullResolutionImage];
  103. 106 */
  104.  
  105. return cell;
  106.  
  107. }
  108.  
  109. //单元格大小
  110. - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{
  111.  
  112. return CGSizeMake(, );

iOS - 获取手机中所有图片的更多相关文章

  1. 获取HTML中所有图片的 URL

    /// <summary> /// 获取HTML中所有图片的 URL /// </summary> /// <param name="strHtml" ...

  2. ios 获取手机信息(UIDevice、NSBundle、NSLocale)

    iOS的SDK中提供了UIDevice.NSBundle,NSLocale. UIDevice        UIDevice提供了多种属性.类函数及状态通知,帮助我们全方位了解设备状况. 从检測电池 ...

  3. iOS获取手机相关信息

    iOS具体的设备型号: #include <sys/types.h> #include <sys/sysctl.h> - (void)test { //手机型号. size_t ...

  4. 【Android】获取手机中已安装apk文件信息(PackageInfo、ResolveInfo)(应用图片、应用名、包名等)

    众所周知,通过PackageManager可以获取手机端已安装的apk文件的信息,具体代码如下 PackageManager packageManager = this.getPackageManag ...

  5. ios 获取手机相关的信息

    获取手机信息      应用程序的名称和版本号等信息都保存在mainBundle的一个字典中,用下面代码可以取出来 //获取版本号 NSDictionary *infoDict = [[NSBundl ...

  6. Android_(传感器)获取手机中的传感器

    传感器是一种检测装置,能够感受被测量的信息,并能将检测和感受到的信息按一定规律变换成电信号或其它所需形式的信息输出 Android操作系统中内置了很多的传感器(物理装置),能够探测.感受外界的信号.物 ...

  7. iOS获取手机型号,类似iphone 7这种 含swift和OC

    获取手机设备信息,如name.model.version等,但如果想获取具体的手机型号,如iphone5.5s这种,就需要如下这种 swift: func phonetype () -> Str ...

  8. IOS 获取通讯录中信息

    获取通讯录中信息 一. 我们设置一个ABAddressBookRef类型的属性addressBook. 二. 要获得通讯录中的信息,我们需要获取访问通讯录的权限. 在运行下面的获取权限的方法的时候,系 ...

  9. iOS获取手机型号,Swift获取手机型号(类似iphone 7这种,检测机型具体型号)

    获取手机设备信息,如name.model.version等, 但如果想获取具体的手机型号,如iphone5.5s这种,就需要如下这种(含Swift和OC两种写法) Swift建议添加到extensio ...

随机推荐

  1. Java Consumer and Producer demo

    import java.util.Random; import java.util.concurrent.LinkedBlockingQueue; class producer {     Rando ...

  2. Linux (二) vi

    1  步骤 1)  vi  test.txt 进入一般模式 2)   i    进入编辑模式,输入内容 3)  Esc 回到一般模式 4)  :wq 存储后退出 2  编辑模式 [i] 光标处插入, ...

  3. 边工作边刷题:70天一遍leetcode: day 83

    Find the Duplicate Number 要点:通过Pigeonhole principle对值空间做binary search,具体来说, low,mid,high都是值空间,所以范围是[ ...

  4. codeforces 712A A. Memory and Crow(水题)

    题目链接: A. Memory and Crow time limit per test 2 seconds memory limit per test 256 megabytes input sta ...

  5. fontAwesome代替网页icon小图标

    引言 奥森图标(Font Awesome)提供丰富的矢量字体图标—通过CSS可以任意控制所有图标的大小 ,颜色,阴影. 网页小图标到处可见,如果一个网页都是干巴巴的文字和图片,而没有小图标,会显得非常 ...

  6. UVA 11983 Weird Advertisement --线段树求矩形问题

    题意:给出n个矩形,求矩形中被覆盖K次以上的面积的和. 解法:整体与求矩形面积并差不多,不过在更新pushup改变len的时候,要有一层循环,来更新tree[rt].len[i],其中tree[rt] ...

  7. Treap(树堆):随机平衡二叉树实现

    本文是根据郭家宝的文章<Treap的原理及实现>写的. #include<stdio.h> #include<string.h> #include<stdli ...

  8. unity3d Aniso Level 摄像机近地面清楚,远地面模糊

    设置方法 选中贴图 在属性面板,拖动Aniso Level的值从0~9改变,值越大贴图越清晰,但是消耗也变大,文档说会造成显卡消耗,一般只用在地面上,其他地方没必要 遇到的问题 但是打包到Ipod上面 ...

  9. js定时器的一些小问题

    1 js中定时器分为两种:setInterval和setTimeout, 但是在代码的执行中,定时器的优先级最低,系统里其他不在执行的时候,它才开始.例子如下: 2 3 <script> ...

  10. (copy)MVC4.0网站发布和部署到IIS7.0上的方法

    最近在研究MVC4,使用vs2010,开发的站点在发布和部署到iis7上的过程中遇到了很多问题,现在将解决的过程记录下来,以便日后参考,整个过程主要以截图形式呈现 vs2010的安装和mvc4的安装不 ...