AR Quick Look在Swift Playgrounds中AR模式失效问题咨询
AR Quick Look在Swift Playgrounds中AR模式不可用问题
我开发了一个简单视图,通过ARQLView展示.usdz格式的耐克鞋模型。这段代码在Xcode侧载到iPad的应用中可正常运行,AR模式可用;但在iPad的Swift Playgrounds中运行相同代码时,视图显示正常,但“AR”模式呈灰色不可用,仅“Object”模式可选,只能平移缩放3D模型,无法进入AR模式。想咨询这是Playgrounds的功能限制,还是Playgrounds存在Bug?
我参考了一篇介绍SwiftUI中使用AR Quick Look的文章,在Xcode项目和Swift Playground中使用了以下代码:
ARQL视图代码
import UIKit import QuickLook import ARKit class ARQLViewController: UIViewController, QLPreviewControllerDataSource { let assetName = "sneaker_airforce" let assetType = "usdz" let allowsContentScaling = true let canonicalWebPageURL = URL(string: "") override func viewDidAppear(_ animated: Bool) { let previewController = QLPreviewController() previewController.dataSource = self present(previewController, animated: true, completion: nil) } func numberOfPreviewItems(in controller: QLPreviewController) -> Int { return 1 } func previewController(_ controller: QLPreviewController, previewItemAt index: Int) -> QLPreviewItem { guard let path = Bundle.main.path(forResource: assetName, ofType: assetType) else { fatalError("Couldn't find the supported asset file.") } let url = URL(fileURLWithPath: path) let previewItem = ARQuickLookPreviewItem(fileAt: url) previewItem.allowsContentScaling = allowsContentScaling // default = true previewItem.canonicalWebPageURL = canonicalWebPageURL // default = nil return previewItem } }
SwiftUI封装代码
import SwiftUI struct ARQLView: UIViewControllerRepresentable { typealias UIViewControllerType = ARQLViewController func makeCoordinator() -> Coordinator { return Coordinator(self) } func makeUIViewController(context: Context) -> ARQLViewController { let viewController = ARQLViewController() return viewController } func updateUIViewController(_ uiViewController: ARQLViewController, context: Context) { } class Coordinator: NSObject { var parent: ARQLView init(_ parent: ARQLView) { self.parent = parent } } }
我通过按钮点击调用该视图。

这是Swift Playgrounds的功能限制,并非Bug。
原因如下:
- Swift Playgrounds为了轻量化运行环境和安全管控,对ARKit相关权限及系统接口做了限制。AR Quick Look的AR模式依赖ARKit的相机访问权限和空间跟踪能力,而Playgrounds默认未授予相机权限,也未完全开放ARKit底层接口的调用权限。
- 此外,Playgrounds的沙箱环境与Xcode侧载的正式应用沙箱存在差异,部分AR相关的系统服务在Playgrounds中无法正常初始化,直接导致AR模式被禁用。
若需在iPad上测试AR功能,建议通过Xcode侧载应用的方式进行;如果想在Playgrounds中体验AR,只能使用官方适配过权限的内置AR模板项目。
内容的提问来源于stack exchange,提问作者June
相关产品推荐
相关产品推荐

