【发布时间】:2014-09-10 17:45:27
【问题描述】:
我有一个具有自定义图像选择器的应用程序,它使用 ALAssetLibrary 创建相册选择器和图像选择器。我们已经实现了一个自定义选择器,以便我们的客户选择多个图像。此图像选择器在 iOS 7 下运行良好,并显示包含所有用户照片的“相机胶卷”相册。但是,在 iOS 8 下运行相同的应用程序时,苹果似乎已从相册视图中删除了“相机胶卷”相册,只显示“最近的照片”。据我所知,在 iOS 8 中访问所有照片的唯一方法是通过 Collection 视图(在照片应用程序或新的内置选择器中)。不幸的是,我现在不能使用 Photokit,因为我仍然需要支持我的 iOS 6 和 7 用户。在 iOS 8 下运行 iOS 7 应用程序(在 Xcode 5 中编译)时,有谁知道获取所有资产并使用 ALAssetLibrary 创建自定义相机胶卷相册的方法?
更新
好吧,正如我在上面的原始帖子中所说,我最初无法使用新的照片框架 (PhotoKit)。但是,我们最近将构建移至 Xcode 6,我现在可以使用照片框架创建一组所有照片(查看 WWDC ExampleappusingPhotosframework 示例代码了解如何执行此操作)。
然而,正如大家所说的 PhotoKit 一样强大,它缺少一些关键的过滤功能。事实上,使用带有 PHFetchResult 的谓词来过滤掉原始“PhotoStream”中的照片并不容易。您只能使用公共属性。幸运的是,我想出了如何使用 PHAsset 描述过滤它们。如果照片在用户的照片流中,则描述中列出的assetSource 键等于2。因此,我对结果使用了快速枚举,并使用 assets.description 属性上的简单 stringInRange 过滤器将所有资产移动到不在 PhotoStream 中的数组中(寻找“assetSource=2”)。它可能不是最好的解决方案,但它现在可以工作,因此用户不会从本地图书馆和他们的照片流中看到他们照片的副本。至少我可以展示所有客户的照片,并让我的多媒体选择器的功能与使用 ALAssetLibrary 的原始类一样接近。
当然,如果有人使用谓词有更好的解决方案,请 lmk。
【问题讨论】:
-
没关系,我看错了你的问题。抱歉打扰了。
-
我不久前在这里写过... AssetSource 有问题,所以要小心。它似乎已在 8.0.2 上进行了修补。 stackoverflow.com/questions/25730830/…
标签: xcode5 ios8 camera-roll alassetlibrary