无法使用锚点激活约束

所以,我正在尝试以编程方式创建一个sceneView

class ViewController: UIViewController, ARSCNViewDelegate { var sceneView: ARSCNView = ARSCNView() let configuration = ARWorldTrackingConfiguration() override func viewDidLoad() { super.viewDidLoad() self.sceneView.debugOptions = [ARSCNDebugOptions.showFeaturePoints, ARSCNDebugOptions.showWorldOrigin] self.configuration.planeDetection = .horizontal self.sceneView.session.run(configuration) self.sceneView.delegate = self self.sceneView.autoenablesDefaultLighting = true //add autolayout contstraints self.sceneView.translatesAutoresizingMaskIntoConstraints = false self.sceneView.topAnchor.constraint(equalTo: self.view.topAnchor).isActive = true self.sceneView.leftAnchor.constraint(equalTo: self.view.leftAnchor).isActive = true self.sceneView.rightAnchor.constraint(equalTo: self.view.rightAnchor).isActive = true self.sceneView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor).isActive = true } func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) { guard anchor is ARPlaneAnchor else {return} } } 

但我收到此错误消息:

由于未捕获的exception’NSGenericException’而终止应用程序,原因:’无法使用锚点激活约束,因为它们没有共同的祖先。 约束或其锚点是否引用不同视图层次结构中的项目? 那是非法的。

它发生在部分\\add autolayout contstraints 。 如何为该元素添加约束?

dan是对的,您需要先将sceneView添加为子视图,然后才能锚定它。 尝试这样的事情:

 view.addSubview(sceneView) sceneView.anchor(top: self.view.topAnchor, left: self.view.leftAnchor, bottom: self.view.bottomAnchor, right: self.view.rightAnchor, paddingTop: 0, paddingLeft: 0, paddingBottom: 0, paddingRight: 0, width: 0, height: 0)