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