簡體   English   中英

更改導航欄“prefersLargeTitles”時的平滑過渡

[英]Smooth transition when changing navigation bar "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有點小問題。 有沒有辦法讓這個更順暢?

非常感謝

您應該通過您想要影響的特定視圖控制器的導航項來更改行為,而不是通過導航控制器直接更改首選項。

// 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
    }
}

您可以刪除viewWillAppearviewWillDisappear

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM