有没有任何方法来保持列表顺序,用户已经安排了他们的所有相册在照片应用程序?我一整天都在试着修复这个问题,我似乎不知道我错过了什么来保留在我的应用程序中显示的顺序。
我想保留这个顺序,因为用户可以在Photos应用程序中重新排列他们的相册,所以我希望我的UI与列表顺序相匹配。
用于设置列表的代码:
PHFetchResult *smartAlbumFetchResult = [PHAssetCollection fetchAssetCollectionsWithType:
PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeAny options:nil];
PHFetchResult *albumFetchResult = [PHAssetCollection fetchAssetCollectionsWithType:
PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAny options:nil];
NSArray *collectionFetches = @[smartAlbumFetchResult, albumFetchResult];
NSMutableArray *albumArray = [NSMutableArray new];
for (PHFetchResult *newFetch in collectionFetches)
{
for (PHAssetCollection *sub in newFetch)
{
[albumArray addObject:sub];
// Other setup omitted
}
}发布于 2015-06-19 21:50:23
对不起,但我不认为这实际上是可能的(我希望在一些升级)。
实际上,可以使用PHFetchOptions对资产集合进行排序,但是PhotoKit只支持谓词和sortDescriptors属性的一组受限键(请参阅PHFetchOptions),在这两者之间,我看不到用户在Photos应用程序中所安排的列表顺序的键。
发布于 2015-06-17 19:34:34
您不能在PHAssetCollection类中创建一个考虑到订单的属性吗?这样,您就可以根据属性显示它们。
一个非常简单的例子,如果类包含1-n中的一个数字,基于这个数字,您知道要显示哪个类/照片?(或者根据该属性对它们进行排序,您可以在排序之后循环)。
@编辑简单示例:
在类PHAssetCollection中,在.h文件中声明一个属性。
@property (retain, nonatomic) NSInteger id;在PHAssetCollection文件中的类.m中,您可以在初始化器方法中填充它。如果你想在.m文件中使用他,你必须合成他。你可以选择随时随地填补,这取决于你的需求。我可以想象他们得到了一个标准的id,当一个用户拖动一张照片时,它会在上面设置一个新的id。
您可以根据以下内容对列表进行排序,实现比较方法并调用比较功能:
//Implement
- (NSComparisonResult)compare:(PHAssetCollection *)otherPhoto{
return [self.id compare:otherPhoto.id];
}
//Call method
NSMutableArray *sortedArray;
sortedArray = [sub sortedArrayUsingSelector:@selector(compare:)];要做到这一点有很多种方法。另一个更复杂的方法是跟踪后台的顺序,而不是每次更改顺序时都更改id。调用ApplicationWillTerminate或ApplicationDidEnterBackground时,您将根据照片的顺序更改照片的id。这样,您只需要更改id一次,这将为您节省一些性能。
https://stackoverflow.com/questions/30770453
复制相似问题