Live Photos 是 iOS 9 的一个新特性,它提供相对于传统照片更生动的展现方式。当用户按下拍照键
的时候,照片 APP 会捕捉比传统照片更多的内容,包括声音和更多的帧。当用户浏览这些照片时,他们能与这些照片交互并且回放那些被捕捉的内容,这样让照片看起来更加生动。
iOS 9.1 提供了与 Live Photos 交互的 API,还可以将这些数据导出,用作分享。新提供的 Photos framework 可以从 PHImageManager
对象中取得 PHLivePhoto
的实例。这个对象可以用来表示 Live Photo 中的数据。你可以使用 PHLivePhotoView
对象来现实 Live Photo 的内容。PHLivePhotoView
用于展示图片,处理用户交互,还有对内容显示的处理。
你还可以使用 PHAssetResource
来访问 PHLivePhoto
来进行共享操作。你可以使用 PHImageManager
或 UIImagePickerController
来从用户的照片库中请求 PHLivePhoto
对象。如果你还在开发一个 Extension,你还可以使用 NSItemProvider
对象来获取 PHLivePhoto
对象。在接受共享的一方,你可以通过发送过来的文件,来重建 PHLivePhoto
对象。
Live Photo 的显示规范
你要记住 Live Photo 依然是 Photo。如果你要把 Live Photo 显示在不支持 PHLivePhotoView
的环境中,那么推荐你按照普通照片的方式来展现它。
不要将 Live Photo 的额外帧和音频分开来显示。用一致的方式显示 Live Photo 并且让他们在所有的 APP 种都以相同的方式展现和交互非常重要。
推荐你使用 PHLivePhotoView
类提供的 livePhotoBadgeImageWithOptions:
方法提供的角标来对 Live Photo 进行标识。
Live Photo 的分享规范
Live Photo 的数据被导出成一系列文件存放在 PHAssetResource
对象中。当你将它们上传到服务器的时候,这些文件必须以一个整体单元的形式上传。当你需要在接收方重新构建 PHLivePhoto
对象的时候,这些文件将要被验证。
如果你的应用允许用户在上传前对照片进行一些特效处理,那么这些特效也必须应用到 Live Photo 的所有帧上。如果你不支持将调整应用到整个 Live Photo 上,就将它作为普通照片来分享,并告知用户。
如果你的应用提供了选择并分享照片的 UI 界面,你应该能让用户预览整个 Live Photo 的所有内容,这样用户能够知道他们分享出去的内容是什么。当用户在你的应用中选择了照片后,用户应该还可以把 Live Photo 关闭掉,这样他们就可以将这些照片以传统的方式发送出去。
更多精彩内容可关注微信公众号:
swift-cafe
更多精彩内容,请扫码关注微信公众号