1

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

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

退出 AR 模式是失败的。

屏幕上没有显示 ARSCNView 下方的 SCNView,而是在移除 ARSCNView 之前保留了相机馈送的静态图像。

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

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

1 回答 1

1

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

添加 exampleViewA 和删除 exampleViewB 时

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

反之亦然,用于添加 exampleViewB 和 revmoing exampleViewA

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

但是为了做到这一点,在视图之间来回移动的行为,你应该有一个容器来记住/存储你的 ARSCNViews,如下所示:

var arSCNViews: [String:ARSCNView] = {
return [
          "exampleViewA": exampleViewA,
          "exampleViewB": exampleViewB
]()
于 2018-07-12T20:38:46.813 回答