对于单个View Controller更喜欢大标题

时间:2018-12-01 22:00:28

标签: swift uinavigationcontroller uinavigationbar

如何为嵌入在导航控制器中的单个View Controller设置大标题? 通常,我只能为整个导航控制器(包括所有视图控制器)设置大标题,但我只希望显示一个大标题。

$index

3 个答案:

答案 0 :(得分:2)

您可以在ViewController出现时在prefersLargeTitles = true中设置viewWillAppear,在ViewController消失时在prefersLargeTitles = false中设置viewWillDisappear

override func viewWillAppear(_ animated: Bool) {
    navigationController?.navigationBar.prefersLargeTitles = true
}

override func viewWillDisappear(_ animated: Bool) {
    navigationController?.navigationBar.prefersLargeTitles = false
}

答案 1 :(得分:1)

您只能为此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
}

答案 2 :(得分:1)

虽然其他两个答案都可以解决问题,但更干净的方法是在所需的UIViewController中执行以下操作:

navigationItem.largeTitleDisplayMode = .always

navigationItem.largeTitleDisplayMode = .never

相反的效果。
这消除了跟踪状态的需要,我认为这是一个巨大的进步

有关该主题的更多信息,请参见largeTitleDisplayMode - Apple Developer Documentation

唯一的缺点是它是iOS 11.0 +