我的应用程序有一个自定义图像选择器,它使用ALAssetLibrary创建一个Album选择器和图像选择器。我们已经实施了一个自定义选择器,以便我们的客户选择多个图像。此图像选择器在iOS 7下运行良好,并显示包含所有用户照片的“相机胶卷”相册。但是,在iOS 8下运行相同的应用程序时,似乎Apple已从“相册”视图中删除了“相机胶卷”相册,并且仅显示“最近的照片”。从我所看到的,访问iOS 8中所有照片的唯一方法是通过Collection视图(在Photos应用程序或新的内置选择器中)。不幸的是,我现在不能使用Photokit因为我仍然需要支持我的iOS 6& 7位用户有没有人知道在iOS 8(在Xcode 5中编译)运行iOS 7应用程序时使用ALAssetLibrary获取所有资产并创建自定义相机胶卷相册的方法?
更新
好吧,正如我在上面的原帖中所述,我最初无法使用新的照片框架(PhotoKit)。但是,我们最近将构建版本移至Xcode 6,现在我可以使用照片框架创建一组所有照片(请参阅WWDC ExampleappusingPhotosframework示例代码以了解如何执行此操作)。
然而,就像每个人都说PhotoKit一样强大,它缺少一些关键的过滤功能。实际上,没有简单的方法可以使用带有PHFetchResult的谓词过滤掉原始“PhotoStream”中的照片。您只能使用公共场所。幸运的是,我想出了如何使用PHAsset描述过滤它们。如果照片位于用户的照片流中,则说明中列出的assetSource键等于2。因此,我在结果上使用了快速枚举,并使用asset.description属性上的简单stringInRange过滤器将所有资产移动到不在PhotoStream中的数组(查找“assetSource = 2”)。它可能不是最好的解决方案,但它现在有效,因此用户不会看到本地图书馆和他们的照片流中的照片重复。至少我可以呈现所有客户的照片,并允许我的多媒体选择器与使用ALAssetLibrary的原始类一样接近。
从各方面来说,如果有人使用谓词有更好的解决方案,请lmk。
答案 0 :(得分:4)
我有同样的问题。无法找到适当的文档说资产库不再能访问这些照片,但Release Notes for iOS 8表示您可以使用PhotosFramework。但是Haven还没有测试过。
Photos框架(Photos.framework)提供了新的工作API 包含照片和视频资产,包括iCloud Photos资产 由照片应用管理。这个框架更有能力 替代资产库框架。
也许这意味着我们 在iOS 8+上使用它?
更新:无法访问所有照片是iOS 8.0上的一个错误,它已在8.0.2上修复。请参阅下面的其他答案。
答案 1 :(得分:0)
好吧,好像这只是一个bug,iOS 8.0.2修复了它(至少对我而言,因为我现在可以看到图像选择器中的所有照片)。
此版本包含改进和错误修复,包括:
[...] 修复了导致某些应用无法访问照片库中的照片的问题。 [...]