我有一个具有自定义图像选择器的应用程序,它使用 ALAssetLibrary 创建相册选择器和图像选择器。我们已经实现了一个自定义选择器,以便我们的客户选择多个图像。此图像选择器在 iOS 7 下运行良好,并显示包含所有用户照片的“相机胶卷”相册。但是,在 iOS 8 下运行相同的应用程序时,苹果似乎已从相册视图中删除了“相机胶卷”相册,只显示“最近的照片”。据我所知,在 iOS 8 中访问所有照片的唯一方法是通过 Collection 视图(在照片应用程序或新的内置选择器中)。不幸的是,我现在不能使用 Photokit,因为我仍然需要支持我的 iOS 6 和 7 用户。
更新
好吧,正如我在上面的原始帖子中所说,我最初无法使用新的照片框架(PhotoKit)。但是,我们最近将构建移至 Xcode 6,我现在可以使用照片框架创建一组所有照片(查看 WWDC ExampleappusingPhotosframework 示例代码以了解如何执行此操作)。
然而,正如大家所说的那样强大的 PhotoKit,它缺少一些关键的过滤功能。事实上,使用带有 PHFetchResult 的谓词来过滤掉原始“PhotoStream”中的照片并不容易。您只能使用公共属性。幸运的是,我想出了如何使用 PHAsset 描述过滤它们。如果照片在用户的照片流中,则描述中列出的assetSource 键等于2。因此,我对结果使用了快速枚举,并使用 assets.description 属性上的简单 stringInRange 过滤器将所有资产移动到不在 PhotoStream 中的数组中(寻找“assetSource=2”)。它可能不是最好的解决方案,但它现在可以工作,因此用户不会从本地图书馆和他们的照片流中看到他们照片的副本。
无论如何,如果有人使用谓词有更好的解决方案,请lmk。