web-dev-qa-db-fra.com

Comment changer la hauteur de la barre de navigation - Swift 3

Je suis à peu près sûr que cela ne fait pas double emploi, car j’ai examiné d’autres réponses qui sont toutes dépassées et ne fournissent pas de réponse exacte.

J'ai un contrôleur de navigation et plusieurs contrôleurs de vue. Je souhaite que la barre de navigation soit un peu plus haute pour qu'elle corresponde à la taille du texte dont j'ai besoin. Comment puis je faire ça ?

J'ai essayé ceci:

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

mais rien ne se passe ...

De plus, je n'ai pas pu ajouter de contrainte à la barre de navigation à l'aide des boutons de disposition Xcode.

J'espère que quelqu'un pourra m'aider à résoudre ce problème. Merci d'avance!

enter image description here

23
KirillC

Voici une façon de le faire:

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

Vous pouvez écrire ce code dans la classe qui étend 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

Vous pouvez créer une classe basée sur UINavigationBar comme ceci

class TTNavigationBar: UINavigationBar {

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

}

Et ajoutez-le à votre NavigationController.

8
Patricio Bravo

Cela pourrait être mieux si vos barres de navigation dans votre application ont toutes la même hauteur ajustée.

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