gpt4 book ai didi

iphone - 如何显示从最新到最旧排列的相册

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:23:13 30 4
gpt4 key购买 nike

当我使用下面的代码从 iphone 加载相册时出现问题。虽然我加载完美,但出现的第一张照片是最旧的照片。是否可以重新排列顺序,以便我可以先加载最新的照片,然后加载时间,最后加载最旧的照片?

- (IBAction)imageFromAlbum:(id)sender
{
imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
[self presentViewController:imagePicker animated:YES completion:nil];
}

最佳答案

要实现您想要的效果,您必须使用 Assets 库框架创建您自己的自定义照片选择器。根据您使用的 ios 版本,您可以使用 UICollectionViewController(从 ios6 开始)或者必须创建自己的版本。

要获取已保存相册中的所有照片/ Assets ,请执行此方法,然后使用属性 ALAssetPropertyDate 使用对象的创建日期按降序对对象进行排序

thisVC.assetArray 将成为您的自定义表或 Collection View Controller 的数据源。这两个方法是异步的,因此您需要在数据源完成后刷新 tableView 或 collectionView

__block YourViewController *thisVC = self;
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
if (group) {
[self enumerateAssetForGroup:group forFilter:[ALAssetsFilter allPhotos] withCompletionBlock:^(id object) {
thisVC.assetArray = object;
[thisVC.assetArray sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
NSDate *date1 = [obj1 valueForProperty:ALAssetPropertyDate];
NSDate *date2 = [obj2 valueForProperty:ALAssetPropertyDate];

return ([date1 compare:date2] == NSOrderedAscending ? NSOrderedDescending : NSOrderedAscending);
}];
//in case of table
[thisVC.tableView reloadData];
//in case of collection view
//reload collection view controller data
}];
}
} failureBlock:nil];


- (void)enumerateAssetForGroup:(ALAssetsGroup*)group forFilter:(ALAssetsFilter*)filter withCompletionBlock:(ALAssetsEnumeration)enumerationCompletionBlock {

[group setAssetsFilter:filter];
__block NSInteger assetsCount = [group numberOfAssets];
__block NSMutableArray *assetArray = [[NSMutableArray alloc] init];
[group enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {
if (result) {
[assetArray addObject:result];
if (*stop) {
enumerationCompletionBlock(assetArray);
[assetArray release];
}
}
else if (assetsCount == 0) {
enumerationCompletionBlock(nil);
}
}];
}

写在第一个方法中的这部分将按降序对你的数组进行排序,

[thisVC.assetArray sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
NSDate *date1 = [obj1 valueForProperty:ALAssetPropertyDate];
NSDate *date2 = [obj2 valueForProperty:ALAssetPropertyDate];

return ([date1 compare:date2] == NSOrderedAscending ? NSOrderedDescending : NSOrderedAscending);
}];

如果你真的想试试这个:)

关于iphone - 如何显示从最新到最旧排列的相册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14848398/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com