我们的应用默认显示一个SCNView,但允许用户进入AR模式,在该模式下,我们在SCNView顶部显示一个ARSCNView。

显示ARSCNView的作品:出现摄像机和虚拟对象。

退出AR模式失败了。

而不是在ARSCNView下方显示SCNView,而是在删除ARSCNView之前,在屏幕上保留的是摄像机供稿的静态图像。

什么是“退出” AR模式并删除ARSCNView的正确方法?

self.arSceneView!.removeFromSuperview()
self.arSceneView = nil

最佳答案

因此,我相信您可以成功地沿当前路线继续前进。您拥有一个视图控制器和多个arscnviews的位置。一种替代方法是让一个父视图控制器和两个子视图控制器具有各自独立的scnviews。为了完成这项工作,您必须在父视图控制器的视图中添加和删除scnviews。但是,这最后一步似乎是您要尝试使用的单一视图控制器路由的工作。如果您想使用一个视图控制器,建议您为ARSCNViews提供一个容器,并从ViewController的视图中添加和删除这些视图,如下所示:

添加exampleViewA并删除exampleViewB时

self.view.addSubview(exampleViewA)
exampleViewB.removeFromSuperview()

反之亦然,用于添加exampleViewB并删除exampleViewA
self.view.addSubview(exampleViewB)
exampleViewA.removeFromSuperview()

但是为了做到这一点,即在视图之间来回移动的行为,您应该有一个容器可以像这样记住/存储您的ARSCNViews:
var arSCNViews: [String:ARSCNView] = {
return [
          "exampleViewA": exampleViewA,
          "exampleViewB": exampleViewB
]()

关于ios - ARKit:删除ARSCNView会显示静态摄像机供稿,而不是最顶层的SCNView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49624459/

10-09 16:31