Код: Выделить всё
class RootViewController:UIViewController{ //Only subclassed
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
transitionCoordinator?.animate(alongsideTransition: { [weak self](context) in
self?.setNavigationColors()
}, completion: nil)
}
func setNavigationColors(){
//Override in subclasses
}
}
class FirstViewController: RootViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.title = "First"
}
override func setNavigationColors(){
navigationController?.navigationBar.barTintColor = UIColor.white
navigationController?.navigationBar.tintColor = UIColor.black
navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.black]
navigationController?.navigationBar.barStyle = UIBarStyle.default
}
}
class SecondViewController: RootViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.title = "Second"
}
override func setNavigationColors(){
navigationController?.navigationBar.barTintColor = UIColor.black
navigationController?.navigationBar.tintColor = UIColor.white
navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white]
navigationController?.navigationBar.barStyle = UIBarStyle.black
}
}
< /code>
С помощью этого кода это происходит:
[img]https://i.sstatic.net/pnkGe.gif[/img]
A few observations:
The transition from FirstПоп-трансляция от второго до первого теперь анимирует правильно, за исключением обратного круга, обратного текста (и Statusbar, но да ..). Они мгновенно изменяются на черный. В первом GIF вы могли видеть, что задний запас и обратный текст также перешел. Bartint исправлен, так что он не понимает неправильный цвет при отмене перетаскивания. < /Li>
< /ul>
Что я делаю не так? Как я должен это сделать? Оттенок задней кнопки, заднего текста, заголовка, Bartint и Statusbar. Это невозможно?
Подробнее здесь: https://stackoverflow.com/questions/430 ... igationbar
Мобильная версия