我在导航堆栈上有一个视图控制器,即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的更改有点小。有什么办法让这件事更顺利吗?
非常感谢
发布于 2018-09-16 23:13:44
与其通过导航控制器直接更改首选项,不如通过要影响的特定视图控制器的导航项来更改行为。
// Root UIViewController
class ViewControllerA: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
navigationController?.navigationBar.prefersLargeTitles = true
navigationItem.largeTitleDisplayMode = .always
}
}
// Pushed UIViewController
class ViewControllerB: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.largeTitleDisplayMode = .never
}
}您可以删除viewWillAppear和viewWillDisappear中的行。
https://stackoverflow.com/questions/52358742
复制相似问题