Spatial Computing 进阶 20m
探索空间计算的 Quick Look
Discover Quick Look for spatial computing
2023年6月5日
一句话判断
空间计算平台的 Quick Look 支持把文件拖出 App 在独立窗口中预览——3D 模型可以自由缩放放置,甚至支持 SharePlay 协作查看。App 只需要几行代码添加拖拽支持。
这场 Session 讲了什么
Session 介绍了 Quick Look 在空间计算平台上的全新能力。
Windowed Quick Look:
- 文件可以从 App 中拖出,在独立窗口中预览。
- 预览窗口与 App 窗口并存,关闭 App 后预览窗口仍然保留。
- 3D 模型(USDZ/Reality 文件)支持自由缩放和放置。
- 缩放 3D 模型时环境变暗,其他场景隐藏,专注查看模型细节。
- 部分 3D 模型支持 SharePlay——在 FaceTime 中共享模型,同步旋转、缩放和动画。
- 图片共享时支持多人协作 Markup。
- App 端只需添加
onDrag修饰符提供 URL,系统自动处理预览。
App 内 Quick Look:
- 使用 SwiftUI 的
quickLookPreview函数或QLPreviewController。 - 以 sheet 形式覆盖在 App 内容上方。
- 现有 iOS App 的 Quick Look 代码自动适配空间计算平台。
Web 端 Quick Look:
- 网站链接标记
rel="ar"属性,Safari 自动在 Quick Look 窗口中打开 3D 内容。 - iOS/iPadOS 上已有的 AR Quick Look 支持自动迁移到空间计算平台。
- 支持自定义选项(如禁用内容缩放)。
文件类型支持:
- 3D 模型:USDZ、Reality 文件。
- 图片、PDF(支持 Markup)。
- 视频等常规文件类型。
值得深挖的点
Windowed Quick Look 的”非阻塞”体验是空间计算平台的核心设计范式之一。在 2D 平台上,打开文件意味着切换到新界面或弹出一个遮盖全屏的模态窗口。在空间计算平台上,文件预览是一个独立的空间窗口——你可以同时看到 App 内容和预览文件,两者互不干扰。这对协作和参考类场景特别有价值。
SharePlay 集成让 3D 模型查看变成协作体验。共享一个 USDZ 模型时,所有参与者看到相同的旋转角度、缩放级别和动画状态。这比屏幕共享更进一步——每个人可以自由调整视角,但模型状态保持同步。对电商场景(“一起看看这个产品”)和教育场景(“大家看这个解剖模型”)都有很大价值。
几行代码接入的设计哲学降低了门槛。App 不需要理解 Quick Look 的渲染管线,只需要在 drag 事件中提供文件 URL。系统负责下载(如果是远程文件)、预览、编辑、分享的全部流程。
代码片段
App 中添加 Windowed Quick Look 支持:
// 给文件视图添加拖拽支持
struct FileView: View {
let fileURL: URL
var body: some View {
// 文件展示内容
VStack {
Image(systemName: "doc")
Text(fileURL.lastPathComponent)
}
// 添加拖拽支持——拖出 App 时自动在 Quick Look 窗口中打开
.onDrag {
NSItemProvider(object: fileURL as NSURL)
}
}
}
App 内展示 Quick Look 预览:
// SwiftUI 中使用 quickLookPreview
struct ContentView: View {
@State var selectedURL: URL?
var body: some View {
FileListView()
.quickLookPreview($selectedURL)
// selectedURL 非 nil 时自动展示预览
}
}
// 或使用 QLPreviewController(更多自定义选项)
// 现有 iOS App 的 QLPreviewController 代码自动适配空间计算平台
Web 端 AR Quick Look:
<!-- 在链接上标记 rel="ar" 属性 -->
<a href="model.usdz" rel="ar">
<img src="model-thumbnail.jpg" alt="3D 模型">
</a>
<!-- 在空间计算平台上点击链接,Safari 自动在 Quick Look 窗口中打开 3D 模型 -->
<!-- iOS/iPadOS 上已有的 AR Quick Look 支持自动迁移 -->
最佳实践
- 如果你的 App 展示文件列表,为每个文件项添加
onDrag支持,让用户可以拖出预览。 - 电商类 App 优先使用 Windowed Quick Look 展示 3D 产品模型,用户体验比 App 内预览更好。
- 网站上的 3D 产品模型标记
rel="ar"属性,覆盖 Safari 用户。 - 图片和 PDF 支持 Markup 协作,适合团队审阅场景。
- 远程文件的 URL 直接提供给拖拽——系统自动处理下载,不需要预先缓存。
- 现有 iOS Quick Look 代码不需要改动,直接迁移到空间计算平台。
还有什么值得关注
- “Advances in AR Quick Look”(WWDC19)介绍了 AR Quick Look 的自定义选项。
- “Explore Materials in Reality Composer Pro” 介绍 3D 模型的材质制作。
- Windowed Quick Look 的编辑(如 Markup)不会写回原始 URL,因为系统处理的是文件副本。
- 3D 模型缩放到很大时,环境自动变暗以帮助聚焦——这是系统行为,不需要手动实现。
- Quick Look 同时处理文件安全问题——不需要在 App 中打开不受信任的文件。
WWDC 2023