Плавный переход при смене панели навигации "prefersLargeTitles"
У меня есть контроллер вида, который pushed
на стек навигации. Стек имеет navigationBar.prefersLargeTitles = true
В то время как этот новый контроллер представления имеет navigationBar.prefersLargeTitles = false
, Я добился этого, используя следующий код в контроллере представления, который помещается в стек:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
navigationController?.navigationBar.prefersLargeTitles = false
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
navigationController?.navigationBar.prefersLargeTitles = true
}
Тем не менее, когда я возвращаюсь назад к представлению контроллера представления, изменение в панели навигации от navigationBar.prefersLargeTitles = false
в navigationBar.prefersLargeTitles = true
немного сбой Есть ли способ сделать это более гладким?
Большое спасибо
1 ответ
Вместо непосредственного изменения предпочтения с помощью контроллера навигации, вы должны изменить поведение с помощью элемента навигации конкретного контроллера представления, на который вы хотели бы повлиять.
class ViewControllerA: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.largeTitleDisplayMode = .always
}
}
class ViewControllerB: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.largeTitleDisplayMode = .never
}
}
Вы можете удалить строки, которые у вас есть в viewWillAppear
а также viewWillDisappear
,