ios相册默认是按照时间从过去到现在排列,图片顺序有正序和逆序,group可以用以下方法来选择顺序

/**
@param NSIndexSet               需要获取的相册中图片范围
@param NSEnumerationOptions     获取图片的顺序(顺序还是逆序)
//ALAssetsGroupEnumerationResultsBlock的参数
@param result                   照片ALAsset对象
@param index                    当前result在该group相册中的位置,第index位置上
@param *stop                    需要停止的时候 *stop = YES就停止继续运行当前相册group
*/
enumerateAssetsAtIndexes:(NSIndexSet *)indexSet options:(NSEnumerationOptions)options usingBlock:(ALAssetsGroupEnumerationResultsBlock)enumerationBlock

示例如下

@property (nonatomic, strong) ALAssetsGroup *selectAssetsGroup;
-(void)loadAllPhotos{
    NSInteger photoNumber = [self.selectAssetsGroup numberOfAssets];
    NSIndexSet *IndexSet = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, photoNumber)];
    //图片按照逆序排列(由现在到过去)
    [self.selectAssetsGroup enumerateAssetsAtIndexes:IndexSet options:NSEnumerationReverse usingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {
        if (result) {
            numberOfAssets++;
            NSString *type = [result valueForProperty:ALAssetPropertyType];
            if ([type isEqualToString:ALAssetTypePhoto]){
                numberOfPhotos++;
            }else if ([type isEqualToString:ALAssetTypeVideo]){
                numberOfVideos++;
            }
            [assets addObject:result];
        }
    }];
}

若只想按照系统默认的顺序(由过去到现在),那么可以用

[self.selectAssetsGroup enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {
    if (result) {
        numberOfAssets++;
        NSString *type = [result valueForProperty:ALAssetPropertyType];
        if ([type isEqualToString:ALAssetTypePhoto]){
            numberOfPhotos++;
        }else if ([type isEqualToString:ALAssetTypeVideo]){
            numberOfVideos++;
        }
        [assets addObject:result];
    }
}];

 

posted on 2016-11-24 11:19  lixin327  阅读(8864)  评论(0编辑  收藏  举报