При отмене прокрутки назад мигает панель навигации - PullRequest
0 голосов
/ 13 ноября 2018

У меня довольно простая настройка:

В корневом контроллере вида скрыта панель навигации, а в дополнительном контроллере вида (Settings) панель навигации показана с большим заголовком. Чтобы скрыть и показать панель навигации, я делаю это:

В контроллере корневого представления:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    navigationController?.setNavigationBarHidden(true, animated: animated)
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    navigationController?.setNavigationBarHidden(false, animated: animated)
}

Вот и все. И это прекрасно работает , за исключением для этого особого случая: когда я перемещаюсь вправо, как будто я отклоняю контроллер вторичного вида, но затем поворачиваюсь назад влево, чтобы отменить, панель навигации мигает, пока контроллер вторичного представления анимирует назад, поскольку это должен. Вот как это выглядит в slo-mo:

screengrab

То же самое происходит, если я перемещаю панель навигации, скрывающуюся в дополнительном контроллере вида viewWillAppear(_:).

Как я могу остановить перепрошивку и заставить это работать правильно?

1 Ответ

0 голосов
/ 12 февраля 2019

Несмотря на то, что у меня нет решения, я точно выяснил, что вызвало проблему:

Если вы установите скрытую строку состояния в дополнение к панели навигации, панель навигации будет прыгать, как на видео в OP.

Решением для моего личного случая было в основном скрыть строку состояния только в viewDidAppear. Недостатком является то, что строка состояния альфа не анимируется при перетаскивании.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...