web-dev-qa-db-ja.com

ナビゲーションバーの高さを変更するには-Swift 3

私は他の答えを見て、それらはすべて時代遅れであり、正確な答えを提供していないため、これは重複していないと確信しています。

Navigation ControllerといくつかのView Controllerがあります。ナビゲーションバーを少し高くして、必要なテキストサイズに合わせたいと思います。どうやってやるの ?

私はこれを試しました:

UINavigationBar.appearance().frame = CGRect(x: 0.0, y: 0.0, width: 320.0, height: 210.0) 

しかし、何も起こりません...

また、Xcodeレイアウトボタンを使用してNav Barに制約を追加することもできませんでした。

誰かがこの問題を解決するのを手伝ってくれることを願っています。前もって感謝します!

enter image description here

23
KirillC

これを行う1つの方法を次に示します。

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    let height: CGFloat = 50 //whatever height you want to add to the existing height
    let bounds = self.navigationController!.navigationBar.bounds
    self.navigationController?.navigationBar.frame = CGRect(x: 0, y: 0, width: bounds.width, height: bounds.height + height)

}
30
Frankie

UINavigationControllerを拡張するクラスでこのコードを書くことができます

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    let height = CGFloat(72)
    navigationBar.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: height)
}
9
kbokdia

このようにUINavigationBarに基づいてクラスを作成できます

class TTNavigationBar: UINavigationBar {

    override func sizeThatFits(_ size: CGSize) -> CGSize {
        return CGSize(width: UIScreen.main.bounds.width, height: 55)
    }

}

そして、それをNavigationControllerに追加します。

8
Patricio Bravo

これは、アプリのナビゲーションバーのすべての高さが調整されている場合に適しています。

extension UINavigationBar {
    open override func sizeThatFits(_ size: CGSize) -> CGSize {
        return CGSize(width: UIScreen.main.bounds.width, height: 51)
    }
}
4
HMHero