【问题标题】:Navigation Bar Title switches from Small to Large text after switching ViewControllers and scrolling down?切换 ViewController 并向下滚动后,导航栏标题从小文本切换到大文本?
【发布时间】:2023-03-12 18:01:02
【问题描述】:

我刚刚在我的应用中注意到了这个问题。我根本不想拥有大标题,所以这是我在viewDidLoad() 中调用的代码...

//MARK: - Navigation Bar Setup
    func navConAcc() {
        let addBarButton = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(addWorkout))
        navigationItem.rightBarButtonItem = addBarButton
        navigationController!.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor(red: 0.4784, green: 0.0863, blue: 0, alpha: 1.0)]
        navigationController?.navigationBar.prefersLargeTitles = false
        navigationController?.navigationItem.largeTitleDisplayMode = .never
        navigationItem.title = "My workouts"
    }

如您所见,我将大标题设置为 false 并将显示模式设置为 .never,所以当这个 viewController 第一次加载时,标题大小没有问题,但如果我继续下一个 viewController,我将 prefersLargeTitles 设置为 true,然后我随后返回第一个 viewController 并向下滚动,我的第一个 viewController 中的标题出于某种原因切换为大。有人可以向我解释为什么会这样吗?

【问题讨论】:

    标签: ios uinavigationcontroller uinavigationitem preferslargetitles


    【解决方案1】:

    这是因为您将第二个控制器上 nav-bar 的首选行为设置为很大,并且因为它在同一个导航堆栈中而得以维护。将此代码添加到您的第一个视图控制器以解决此问题:

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

    【讨论】:

    • 是的,这应该是正确的答案。实际上,我在您发布此内容后仅 2 秒就发布了相同的答案:D。所以我把它删了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-06
    • 2016-06-15
    • 2021-03-15
    • 1970-01-01
    • 1970-01-01
    • 2017-04-24
    相关资源
    最近更新 更多