ARKit:删除ARSCNView会显示静态摄像头,而不是最顶级的SCNView

时间:2018-04-03 07:22:41

标签: ios scenekit arkit arscnview sceneview

我们的应用程序默认显示SCNView,但允许用户进入AR模式,我们在SCNView上显示ARSCNView。

显示ARSCNView的工作原理:出现相机和虚拟对象。

退出AR模式失败了。

除了在ARSCNView下方显示SCNView之外,屏幕上剩下的是在删除ARSCNView之前摄像机反馈的静态图像。

"退出"的正确途径是什么? AR模式并删除ARSCNView?

class="sel"

1 个答案:

答案 0 :(得分:1)

因此,我相信您可以成功地沿当前路线继续前进。您拥有一个视图控制器和多个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
]()