簡體   English   中英

通過在 Swift 中添加兩個標簽而不是標題來自定義導航欄

[英]Customize navigation bar by adding two labels instead of title in Swift

我試圖在導航欄中顯示標題的位置添加兩個標簽,但我正在努力這樣做。 如果我能用故事板實現這一點,那就太好了,但正如我所見,我做不到。

正如我所見,我需要使用 navigationItem,但我不知道具體如何做到這一點。 如果有人有任何例子,或者有人可以更具體地向我解釋如何做到這一點,那就太好了。

我需要提一下,我完全不熟悉 Obj-C,所以任何幫助都需要在 Swift 中進行。

我不確定您是否可以從故事板中執行此操作,但是如果您想添加兩個標題標簽,您可以在您想要兩個標題的視圖控制器的viewDidLoad()方法中執行以下操作:

if let navigationBar = self.navigationController?.navigationBar {
    let firstFrame = CGRect(x: 0, y: 0, width: navigationBar.frame.width/2, height: navigationBar.frame.height)
    let secondFrame = CGRect(x: navigationBar.frame.width/2, y: 0, width: navigationBar.frame.width/2, height: navigationBar.frame.height)

    let firstLabel = UILabel(frame: firstFrame)
    firstLabel.text = "First"

    let secondLabel = UILabel(frame: secondFrame)
    secondLabel.text = "Second"

    navigationBar.addSubview(firstLabel)
    navigationBar.addSubview(secondLabel)
}

通過這種方式,您可以向導航欄添加任意數量的子視圖

這是一個使用堆棧視圖的實現,它還為您提供了標簽布局的多功能性:

class ViewController: UIViewController {

    lazy var titleStackView: UIStackView = {
        let titleLabel = UILabel()
        titleLabel.textAlignment = .center
        titleLabel.text = "Title"
        let subtitleLabel = UILabel()
        subtitleLabel.textAlignment = .center
        subtitleLabel.text = "Subtitle"
        let stackView = UIStackView(arrangedSubviews: [titleLabel, subtitleLabel])
        stackView.axis = .vertical
        return stackView
    }()

    override func viewDidLoad() {
        super.viewDidLoad()
        navigationItem.titleView = titleStackView
    }

    override func viewWillLayoutSubviews() {
        super.viewWillLayoutSubviews()

        if view.traitCollection.horizontalSizeClass == .compact {
            titleStackView.axis = .vertical
            titleStackView.spacing = UIStackView.spacingUseDefault
        } else {
            titleStackView.axis = .horizontal
            titleStackView.spacing = 20.0
        }
    }
}

演示使用堆棧視圖創建自定義導航項的標題視圖

暫無
暫無

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

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