如何为导航控制器中嵌入的单个视图控制器设置大标题? 通常我只能为整个导航控制器(包括所有视图控制器)设置大标题,但我只希望一个显示大标题。
self.navigationController?.navigationBar.prefersLargeTitles = true
虽然其他两个答案都可以解决问题,但实现此目的的一种更简洁的方法是在您想要的 UIViewController 中执行以下操作:
navigationItem.largeTitleDisplayMode = .always
或者相反的效果:
navigationItem.largeTitleDisplayMode = .never
这消除了跟踪状态的需要,在我看来这是一个巨大的进步
有关该主题的更多信息,请参阅 largeTitleDisplayMode - Apple 开发人员文档
唯一的缺点是它是iOS 11.0+
prefersLargeTitles = true
中设置
viewWillAppear
,在 ViewController 将要消失时在
prefersLargeTitles = false
中设置
viewWillDisappear
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
navigationController?.navigationBar.prefersLargeTitles = true
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
navigationController?.navigationBar.prefersLargeTitles = false
}
viewController
的逻辑。你可以尝试这样的事情:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationController?.navigationBar.prefersLargeTitles = true
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
self.navigationController?.navigationBar.prefersLargeTitles = false
}
viewDidLoad()
内即可,在推送时您不希望出现大标题。 示例:
override func viewDidLoad() {
super.viewDidLoad()
// This prevents displaying large title for this vc
navigationItem.largeTitleDisplayMode = .never
}