如何将ARSCNView放入Tabview控制器而不冻结ARSession?

我试图在我的应用程序(选项卡式应用程序)中实现iOS 11 beta的ARKit。 但正如在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更好地使用popup视图控制器。

为了获得更好的用户体验,请参阅Apple如何在演示项目中完成popup式屏幕