我正在尝试在我的应用程序(选项卡式应用程序(中实现iOS 11测试版的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出现和消失,最好使用弹出视图控制器。
为了获得更好的用户体验,请参阅Apple如何在其演示项目中执行这些弹出屏幕。