Das Ändern der Navigationsleistenhöhe sah sich in iOS 11 einem neuen Ansatz gegenüber. In früheren iOS-Versionen war es möglich, die Navigationsleistenhöhe zu ändern, indem die Standardnavigationsleiste ausgeblendet und eine neue mit benutzerdefiniertem Rahmen hinzugefügt wurde:
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)
Aber es scheint, dass es in iOS 11 xCode Beta nicht funktioniert. Egal wie hoch die neue Höhe ist, sie bleibt immer bei 44.
das habe ich in xCode 9:
weiß jemand, wie man das Problem löst?
Ihr Code funktioniert einwandfrei und es ist nichts falsch daran. Wenn Sie die Hintergrundfarbe Ihres customNavigationBar
ändern, sehen Sie, dass Sie die Navigationsleiste mit der gewünschten Höhe erhalten. Es scheint jedoch ein Problem mit Xcode 9 zu sein, die Standardnavigationsleiste auszublenden.
Wie Sie im Xcode 9-Bild sehen können, haben Sie die benutzerdefinierte Navigationsleiste, die Standardnavigationsleiste wird jedoch nicht ausgeblendet. Wahrscheinlich ein Fehler in Xcode 9, ich habe es auch nicht geschafft, ihn durch das Storyboard zu verstecken.
Dies scheint ein Fehler in Xcode 9 zu sein, Fehlerberichte wurden an Apple übermittelt.
Dies ist eher ein Hack, bis Apple behebt den Fehler. Ich hatte das gleiche Problem, also habe ich die obere Einschränkung der Navigationsleiste von 0 auf 20 geändert.
Wenn Ihre UINavigationBar-Hintergrundfarbe nicht weiß ist, wird die Statusleiste weiß angezeigt. Sie können dies beheben, indem Sie in diesem bestimmten UIViewController Folgendes hinzufügen.
let statusBarView = UIView(frame: UIApplication.shared.statusBarFrame)
let statusBarColor = UIColor.red
statusBarView.backgroundColor = statusBarColor
view.addSubview(statusBarView)
Dies scheint ein langer Hack zu sein, ist aber immer noch besser, als mit Xcode 8.3 zurückzukehren und zu kompilieren.
Die einzige Möglichkeit, es zum Laufen zu bringen, bestand darin, die aktuelle benutzerdefinierte Navigationsleiste zu löschen und einen eingebetteten UINavigationController auf den UIViewController anzuwenden. Editor -> Einbetten in -> Navigationssteuerung.
In den neu erstellten Eigenschaften des Navigationscontrollers muss im Menü "Dienstprogramme" (rechte Leiste) "Simulierte Metriken" das Attribut "Oberste Leiste" angegeben werden. In meinem Fall brauchte ich den Wert 'Opaque Navigation Bar'.
Ich habe auf meinem UIViewController auch den gleichen Wert für "Top Bar" festgelegt, um sicherzugehen.
Auf diese Weise steht Ihnen ein neues Navigationselement zur Verfügung, und Sie können Ihre Balkenschaltflächenelemente erneut hinzufügen.
Es ist das Beste, was ich tun kann, während wir auf das Update von Xcode 9 warten, um es zu beheben.
In iOS 11 können wir die Höhe der Navigationsleiste nicht ändern . Wenn Sie die Höhe erhöhen möchten, sollten Sie die benutzerdefinierte Ansicht verwenden.