Я нашел решение своей проблемы:
После открытия и закрытия ARVC1
и быстрого открытия ARVC2
я испытал мерцание предыдущего ARSession
в текущем ARSession
. Чтобы решить эту проблему, я создаю ARView
в своем MainVC
и передаю ссылку на него контроллеру назначения, где я устанавливаю ограничения arView
программно. Чтобы избежать передачи ARAnchors
, я сбрасываю конфигурацию с параметрами в viewDidLoad
:
arView.session.run(configuration, options: [.resetTracking,.removeExistingAnchors,.stopTrackedRaycasts])
Это также помогло с переходом UINavigationController
(сделал его более плавным), потому что ARSession
настроен до того, как представление будет представлен и устраняет черный флаг sh, возникающий в тот момент, когда вы запускаете новый ARConfiguration
с ARSession
.
. Он также устраняет ошибку консоли (ниже), с которой я столкнулся при быстром закрытии и открытие ViewController
, содержащее ARView
, которое иногда вызывало сбой приложения:
[Сеанс] Сеанс (0x160879b40): произошел сбой с ошибкой: Ошибка Domain = com.apple.arkit.error Code = 102 «Обязательный датчик неисправен». UserInfo = {NSLocalizedFailureReason = Датчик не смог доставить требуемый ввод., NSUnderlyingError = 0x283f959b0 {Ошибка домена = AVFoundationErrorDomain Code = -11800 "Операция не может быть завершена" UserInfo = {NSLocalizedFailureReason = Произошла неизвестная ошибка (-12780D) = Операция не может быть завершена, NSUnderlyingError = 0x283efc8a0 {Error Domain = NSOSStatusErrorDomain Code = -12780 "(null)"}}}, NSLocalizedRecoverySuggestion = Убедитесь, что приложение имеет необходимые параметры конфиденциальности., NSLocalizedDescription = Обязательный датчик не выполнен.} 2020-01-09 16: 20: 38.600835 + 0000 Приложение [573: 231750] [Техника] На эффективность отслеживания в мире влияют ограничения ресурсов [3] 2020-01-09 16: 20: 38.600977 + 0000 Приложение [573: 231750 ] [Техника] Обратный вызов ошибки VIO: 8506.590769, 3, временные метки кадра либо вышли из строя, либо повторяются