xcode5 - ios 8,如何使用ALAssetLibrary获取所有照片来替换丢失的相机胶卷相册

标签 xcode5 ios8 camera-roll alassetlibrary

我有一个应用程序,它有一个自定义图像选择器,它使用 ALAssetLibrary 创建相册选择器和图像选择器。我们实现了自定义选择器,以便我们的客户选择多个图像。该图像选择器在 iOS 7 下运行良好,并显示包含所有用户照片的“相机胶卷”相册。然而,在 iOS 8 下运行相同的应用程序时,苹果似乎已从相册 View 中删除了“相机胶卷”相册,只显示“最近的照片”。据我所知,访问 iOS 8 中所有照片的唯一方法是通过“集合” View (在“照片”应用程序或新的内置选择器中)。不幸的是,我现在无法使用 Photokit,因为我仍然需要支持我的 iOS 6 和 7 用户。有谁知道在 iOS 8 下运行 iOS 7 应用程序(在 Xcode 5 中编译)时获取所有资源并使用 ALAssetLibrary 创建自定义相机胶卷相册的方法?

更新

嗯,正如我在上面的原始帖子中所述,我最初无法使用新的照片框架 (PhotoKit)。不过,我们最近将构建迁移到了 Xcode 6,我现在可以使用照片框架来创建一组所有照片(请参阅 WWDC ExampleappusingPhotosframework 示例代码了解如何执行此操作)。

然而,尽管大家都说 PhotoKit 很强大,但它缺少一些关键的过滤功能。事实上,没有简单的方法可以使用 PHFetchResult 谓词过滤掉原始“PhotoStream”中的照片。您只能使用公共(public)属性(property)。幸运的是,我想出了如何使用 PHAsset 描述来过滤它们。如果照片位于用户的照片流中,则说明中列出的 assetSource 键等于 2。因此,我对结果使用了快速枚举,并使用 asset.description 属性上的简单 stringInRange 过滤器将所有资源移动到不在 PhotoStream 中的数组(查找“assetSource=2”)。它可能不是最好的解决方案,但它目前有效,因此用户不会从本地库和照片流中看到其照片的重复项。至少我可以展示所有客户的照片,并允许我的多媒体选择器的功能与使用 ALAssetLibrary 的原始类一样接近。

无论如何,如果有人使用谓词有更好的解决方案,请 lmk。

最佳答案

我也有同样的问题。找不到正确的文档说明 Assets 库无法再访问这些照片,但 Release Notes for iOS 8说你可以使用 PhotosFramework 来实现这一点。不过还没有测试过。

The Photos framework (Photos.framework) provides new APIs for working with photo and video assets, including iCloud Photos assets, that are managed by the Photos app. This framework is a more capable alternative to the Assets Library framework.

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

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

关于xcode5 - ios 8,如何使用ALAssetLibrary获取所有照片来替换丢失的相机胶卷相册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25771814/

相关文章:

ios - 导出到 Assets 后崩溃并发出警告 "connection to assetsd was interrupted or assetsd died"

android - 如何使用 native react 从相机胶卷中获取随机图像?

ios - 如何在 Info.plist 中读取自定义键的值并在 Xcode 的build设置中使用它?

ios - Xcode 快速帮助面板中的 Appledoc 内联代码?

ios7 - 中卫保护失败 %d 是什么意思?

ios8 - 如何在 ios 8 中限制设备方向更改时警报 View 的方向

ios - 消除 Swift 中 UITableView 中空行的额外分隔线

ios - 下载视频并将其保存到相机胶卷

iOS 和 Swift - 如何从用户那里获取和保存 UIImage?

ios - 在 iOS7 中后台下载后启动应用程序