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!
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)
}
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)
}
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.
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)
}
}