You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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
        }
    }
}

我通过按钮点击调用该视图。

Xcode侧载应用与Playgrounds的对比截图


这是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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 09:42:52