13

我有一个具有自定义图像选择器的应用程序,它使用 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。

4

2 回答 2

4

我有同样的问题。找不到正确的文档说明资产库不再有权访问这些照片,但iOS 8 的发行说明说您可以为此使用 PhotosFramework。虽然还没有测试。

照片框架 (Photos.framework) 提供了新的 API,用于处理由照片应用程序管理的照片和视频资产,包括 iCloud 照片资产。此框架是 Assets Library 框架的更强大的替代方案。

也许这意味着我们必须在 iOS 8+ 上使用它?

更新:无法访问所有照片是 iOS 8.0 上的一个错误,它已在 8.0.2 上修复。请参阅下面的我的其他答案。

于 2014-09-22T11:34:32.760 回答
0

好吧,看起来这只是一个错误,iOS 8.0.2 修复了它(至少对我来说,因为我现在可以在图像选择器中看到所有照片)。

此版本包含改进和错误修复,包括:

[...] 修复了阻止某些应用程序访问照片库中的照片的问题。[...]

于 2014-09-26T10:08:04.810 回答