// 存储图片和图片索引
@property (nonatomic, strong) NSMutableDictionary * allPicDic;
// 存储所有图片
@property (nonatomic, strong) NSMutableArray * allPhotos;
/**
获取相册中所有原图(按时间排序)
*/
- (void)getAllPhotos{
PHFetchOptions *nearestPhotosOptions = [[PHFetchOptions alloc] init];
nearestPhotosOptions.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:NO]];
PHFetchResult * photosResult1 = [PHAsset fetchAssetsWithOptions:nearestPhotosOptions];
_allPicDic = [NSMutableDictionary dictionary];
for (NSInteger i = 0; i<photosResult1.count; i++) {
NSIndexPath * index = [NSIndexPath indexPathForRow:i inSection:0];
PHAsset *asset = photosResult1[i];
// 图片原尺寸
CGSize targetSize = CGSizeMake(asset.pixelWidth, asset.pixelHeight);
// 请求图片
[[PHImageManager defaultManager] requestImageForAsset:asset
targetSize:targetSize
contentMode:PHImageContentModeAspectFit
options:nil
resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) {
_allPicDic[index] = result;
}];
}
}
- (NSMutableArray *)allPhotos
{
if (_allPhotos == nil) {
_allPhotos = [NSMutableArray array];
// 冒泡排序将索引排序
NSMutableArray * allKeys = [NSMutableArray arrayWithArray:[self.allPicDic allKeys]];
NSIndexPath * tmp;
for (int i = 1; i < allKeys.count; i++) {
for (NSInteger j = allKeys.count-1; j>i-1; j--) {
NSIndexPath * index1 = allKeys[j];
NSIndexPath * index2 = allKeys[j-1];
if (index1.row < index2.row) {
tmp = allKeys[j];
allKeys[j] = allKeys[j-1];
allKeys[j-1] = tmp;
}
}
}
// 根据索引取出照片,装到数组中
for (NSIndexPath * indexPath in allKeys) {
UIImage *image = self.allPicDic[indexPath];
[_allPhotos addObject:image];
}
}
return _allPhotos;
}