我有见识和经验.我试图在VC中打开的rcproject文件,但问题是我的屏幕变黑了.为什么?

import RealityKit
import UIKit
import ARKit

class ArVC: UIViewController, ARSCNViewDelegate {
    
    lazy var sceneView: ARSCNView = {
        let sceneView = ARSCNView()
        sceneView.delegate = self
        return sceneView
    }()
    
    var arView: ARView = {
        let arView = ARView()
        let boxAnchor = try! Experience.loadBox()
        arView.scene.anchors.append(boxAnchor)
        return arView
    }()

    override func viewDidLoad() {
        super.viewDidLoad()
        self.view.backgroundColor = .clear
    }
    
    func createView() {
        self.view.addSubview(sceneView)
        self.view.addSubview(self.sceneView)
        self.sceneView.snp.makeConstraints { make in
            make.centerY.centerX.equalToSuperview()
        }
        
        view.subviews.forEach {
            $0.translatesAutoresizingMaskIntoConstraints = false
        }
        
        self.sceneView.addSubview(self.arView)
        self.arView.snp.makeConstraints { make in
            make.centerX.centerY.equalToSuperview()
        }
    }
}

还有哪些其他选项可以通过编程方式设置ARView?非常感谢.

推荐答案

此测试代码实现了这一点.如果您是从头开始构建AR项目(通过 Select 简单的iOS应用程序模板,而不是ARKit模板),请确保在102文件中添加了Privacy - Camera Usage DescriptionRequired device capabilities (Item 0 = ARKit).

import RealityKit
import UIKit

class ViewController: UIViewController {
    
    var arView: ARView = {
        let arView = ARView(frame: .zero)
        let boxAnchor = try! Experience.loadBox()
        arView.scene.anchors.append(boxAnchor)
        return arView
    }()

    override func viewDidLoad() {
        super.viewDidLoad()
        self.view.backgroundColor = .red
        
        self.view.addSubview(self.arView)
            
        NSLayoutConstraint.activate([
            arView.topAnchor.constraint(equalTo: self.view.topAnchor),
            arView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor),
            arView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor),
            arView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor)
        ])
        self.view.subviews.forEach {
            $0.translatesAutoresizingMaskIntoConstraints = false
        }
    }
}

我还注意到你加了sceneView两次.

Swift相关问答推荐

KMM-Swift铸造密封类

如何在SwiftUI的文本视图中显示NSMutableAttributedString?

调度组是否阻止iOS中的主线程?

如何观察UIViewRepresentable中的多个变化?

如何将多个完成处理程序转换为异步?

ToolbarItem 包含在动画中但不应该包含在动画中

应该在ViewModel还是ViewController中使用"Task {}"?

根据其属性组合 2 个模型以在 Swift 中创建另一个模型

如何将视图添加到多行文本视图的末尾?

如何打印出此 struct 中的数据?

SwiftUI:决定键盘重叠的内容

如何在 Swift 中返回 Task 中定义的变量

macOS 守护进程应该由Command Line ToolXcode 模板制作吗?

在 ViewController 的 UICollectionView 中拉取刷新

让我的函数计算数组 Swift 的平均值

Xcode 6 中的嵌入式内容包含 Swift 代码构建设置有什么作用?

如何为多个类 Swift 进行扩展

Swift:如何从函数返回类类型

如何使用 Swift 枚举作为字典键? (符合 Equatable)

在 Swift 中子类化 NSObject - 初始化器的最佳实践