【问题标题】:Photokit preserve user album list orderPhotokit 保留用户相册列表顺序
【发布时间】:2015-08-26 12:55:18
【问题描述】:

有什么方法可以保留用户在“照片”应用中排列所有相册的列表顺序?我整天都在尝试解决这个问题,但我似乎无法弄清楚我缺少什么来保留在我的应用程序中显示的顺序。

我想保留顺序,因为用户可以在照片应用中重新排列他们的相册,所以我希望我的 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
    }
}

【问题讨论】:

    标签: ios objective-c photokit photosframework


    【解决方案1】:

    抱歉,但我认为这实际上是不可能的(我希望进行一些升级)。
    实际上,可以使用 PHFetchOptions 对资产集合进行排序,但 PhotoKit 仅支持 predicate 和 sortDescriptors 属性的一组受限键(请参阅PHFetchOptions),在这些之间我看不到列表顺序的键用户已在照片应用中进行了安排。

    【讨论】:

      【解决方案2】:

      您不能在 PHAssetCollection 类中创建一个考虑顺序的属性吗?这样您就可以根据属性显示它们。

      一个非常简单的例子,如果类包含一个从 1 到 n 的数字,根据该数字您知道要显示哪个类/照片吗?(或者根据该属性对它们进行排序,您可以在排序后循环它。 )

      @编辑 简单的例子:

      在 .h 文件的 PHAssetCollection 类中声明一个属性。

      @property (retain, nonatomic) NSInteger id;
      

      在 .m 文件的 PHAssetCollection 类中,您可以在初始化方法中填写他。如果你想在 .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,这将为您节省一些性能。

      【讨论】:

      • 您的代码示例对我发布的问题没有意义。如果您在 iOS 中使用照片应用程序并更改相册顺序,PHFetchResults 不会给您返回正确的顺序。您也不能修改 PHAssetCollection。
      • 只是给出了一些指导并试图解释这个想法,不会为你拼出来..
      • 这是一笔巨款,你甚至没有研究手头的问题
      • 我不是为了赏金,..只是想提出一些建议。
      • @Silver2009 aviatorken89 询问如何在他的应用中显示用户在 iOS 照片应用中选择的顺序,而不是用户在其应用中设置的顺序。
      猜你喜欢
      • 2020-09-10
      • 1970-01-01
      • 2021-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-25
      • 1970-01-01
      • 2015-12-08
      相关资源
      最近更新 更多