Неправильный предпочитаемый элемент StatusBarStyle при отмене анимированного перехода контроллера - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть UITabViewController, который встраивает немного UIViewControllers.Эти контроллеры могут иметь разные preferredStatusBarStyle.

. Я использую UIViewControllerAnimatedTransitioning+UIPercentDrivenInteractiveTransition для переключения между контроллерами, используя UIScreenEdgePanGestureRecognizer.

. Я заметил, что если я начну переход между двумя контроллерами сотличается preferredStatusBarStyle и я отменяю переход, стиль строки состояния не возвращается к первому предпочтению контроллера, а остается ко второму.Очевидно, что если я завершу переход или переключусь между контроллерами, используя элементы панели вкладок, стиль строки состояния изменится правильно.

Я пытался вызывать setNeedsStatusBarAppearanceUpdate() в каждом viewWillAppear, но строка состояния не меняется.

Я знаю, что могу изменить стиль строки состояния с помощью установщика UIApplication.shared.statusBarStyle, но этот метод устарел.

Я также пытался изменить анимацию для переходов, но проблемане исчезают.

Странно то, что preferredStatusBarStyle контроллера вида «из», когда переход отменен, устанавливается на правильное значение, но отображается как противоположное!

1 Ответ

0 голосов
/ 06 декабря 2018

Я нашел обходной путь для этой проблемы (он не идеален, но он работает)

В viewWillAppear первого контроллера ("from"), вызовите эту анимацию.

DispatchQueue.main.async {
    UIView.animate(withDuration: duration, delay: delay, options: options, animations: {

        self.setNeedsStatusBarAppearanceUpdate()

    }, completion: nil)
}

Таким образом, при отмене перехода на мгновение вы увидите строку состояния второго контроллера вида, а затем строка состояния вернется к первому контроллеру.

...