ARKit: удаление ARSCNView показывает статическую подачу камеры вместо самого верхнего SCNView

Наше приложение показывает SCNView по умолчанию, но позволяет пользователям переходить в режим AR, где мы показываем ARSCNView поверх SCNView.

Показывает работу ARSCNView: появляются камера и виртуальные объекты.

Выход из режима AR - вот что не получается.

Вместо того, чтобы показывать SCNView под ARSCNView, на экране остается статическое изображение с камеры, перед удалением ARSCNView.

Как правильно выйти из режима AR и удалить ARSCNView?

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

1 ответ

Поэтому я считаю, что вы можете успешно продолжить текущий маршрут, на котором вы находитесь. Где у вас есть один контроллер представления и несколько arscnviews. Альтернативой для этого может быть наличие одного родительского контроллера представления и двух дочерних контроллеров представления с их собственными отдельными scnviews. Чтобы это работало, вам нужно будет добавить и удалить 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
]()
Другие вопросы по тегам