如何在不冻结 ARSession 的情况下将 ARSCNView 放入 Tabview 控制器中?

How to put ARSCNView in Tabview controller without freezing the ARSession?

我正在尝试在我的应用程序(Tabbed 应用程序)中实现 iOS 11 beta 的 ARKit。但是正如 线程中所说,每当我将选项卡更改为另一个视图控制器并返回时,ARSession 就会冻结并且不会恢复。

是否可以在选项卡式应用程序中实现 ARSCNView,以便如果您回来我可以恢复 ARSession?如果是这样怎么办?

是的,你可以:

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    let configuration = ARWorldTrackingSessionConfiguration()
    sceneView.session.run(configuration, options: [.resetTracking, .removeExistingAnchors])
}
override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    sceneView.session.pause()
}

当视图消失时停止会话,并在视图出现时通过清除锚点和重置跟踪重新运行会话。还要避免出现和消失 ASCNView 更好地使用弹出视图控制器。

为了更好的用户体验,请查看 Apple 如何在 demo project

中制作这些弹出屏幕