Apparemment, le changement de hauteur de la barre de navigation faisait face à une nouvelle approche dans iOS 11. Dans les versions iOS précédentes, il était possible de modifier la hauteur de la barre de navigation en masquant la barre de navigation par défaut et en ajoutant une nouvelle avec un cadre personnalisé:
self.navigationController?.setNavigationBarHidden(true, animated: false)
let customNavigationBar = UINavigationBar(frame: CGRect(x: 0, y: 0, width: self.view.bounds.width, height: 64))
self.view.addSubview(customNavigationBar)
Mais il semble que cela ne fonctionne pas dans iOS 11 xCode beta. quelle que soit la nouvelle hauteur, il restera toujours à 44.
voici ce que j'ai dans xCode 9:
est-ce que quelqu'un sait comment résoudre le problème?
Votre code fonctionne bien et il n’ya rien de mal à cela. Si vous changez la couleur de fond de votre customNavigationBar
, vous verrez que vous obtiendrez la barre de navigation avec la hauteur souhaitée. Mais il semble que ce soit un problème avec Xcode 9 de masquer la barre de navigation par défaut.
Comme vous pouvez le voir sur l'image Xcode 9, vous avez la barre de navigation personnalisée, mais celle par défaut ne se cache pas. Probablement un bug dans Xcode 9, je n'ai pas réussi non plus à le cacher dans le Storyboard.
Cela semble être un bogue dans Xcode 9, des rapports de bogues ont été archivés chez Apple.
Il s’agit plus d’un hack jusqu’à Apple corrige le bogue. J’étais confronté au même problème. J’ai donc modifié la contrainte supérieure de la barre de navigation de 0 à 20.
Si votre backgroundColor UINavigationBar est autre chose que du blanc, la barre d'état reste blanche. Vous pouvez résoudre ce problème en ajoutant ce qui suit dans cet UIViewController particulier.
let statusBarView = UIView(frame: UIApplication.shared.statusBarFrame)
let statusBarColor = UIColor.red
statusBarView.backgroundColor = statusBarColor
view.addSubview(statusBarView)
Cela semble être un long hack, mais c'est toujours mieux que de revenir en arrière et de compiler avec Xcode 8.3.
La seule façon pour que cela fonctionne est de supprimer la barre de navigation personnalisée actuelle et d'appliquer un UINavigationController incorporé à UIViewController. Éditeur -> Intégrer dans -> Contrôleur de navigation.
Dans les nouvelles propriétés du contrôleur de navigation créées, dans le menu "Simulations" du menu Utilitaires (barre de droite), l'attribut "Barre supérieure" doit être spécifié. Dans mon cas, j'avais besoin de la valeur "Barre de navigation opaque".
Je mets également la même valeur de 'Top Bar' sur mon UIViewController, juste pour être sûr.
En faisant cela, un nouvel "élément de navigation" sera à votre disposition et vous pourrez ré-ajouter vos éléments de boutons.
C'est tout ce que j'ai pu faire pendant que nous attendons la mise à jour de Xcode 9 pour y remédier.
Dans iOS 11, nous ne pouvons pas modifier la hauteur de la barre de navigation . Si vous souhaitez augmenter la hauteur, utilisez une vue personnalisée.