Die UINavigationBar bleibt beim Ausblenden der Statusleiste gleich groß

9

Ich habe versucht, UINavigationBar vor dem Verschieben / Ändern der Größe zu bewahren, wenn Sie setNeedsStatusBarAppearanceUpdate aufrufen.

Ich möchte die Navigationsleiste auf volle 64px Höhe halten, wenn die Statusleiste mit Animation ausgeblendet wird.

Jede Hilfe wäre willkommen!

UPDATE : Ich konnte dieses Problem lösen, indem ich ein neues UIWindow erstelle und die Statusleiste verdecke.

    
Cezary Wojcik 27.10.2013, 16:58
quelle

2 Antworten

0

Ich hatte das gleiche Problem und konnte es beheben, indem ich windowLevel in UIWindowLevelStatusBar änderte

    
Igor Palaguta 16.01.2014 10:19
quelle
0

Sie können dies tun, indem Sie

drücken
  1. Verschieben der gesamten Ansicht des Ansichtscontrollers standardmäßig auf eine um 20px gesenkte Position, die der Höhe der Statusleiste entspricht (d. h., sie bleibt gleich, unabhängig davon, ob die Statusleiste angezeigt wird oder nicht). Dazu ändern Sie die y-Position und die Höhe des Rahmens.
  2. Fixieren Sie den höchstwahrscheinlich unerwünschten schwarzen Balken, den Sie jetzt oben haben, indem Sie UIWindow.backgroundColor in die von Ihnen bevorzugte Farbe ändern (im Normalfall weiß).

Ich habe diese Lösung nach zahlreichen fehlgeschlagenen Versuchen implementiert, das Stottern zu beheben, das beim Wechseln zwischen Ansichtscontrollern auftritt, wo eine Statusleiste angezeigt wird und eine andere nicht. Dies ist die beste Lösung, die ich gefunden habe.

Ich habe 1. in einer Unterklasse von UINavigationController. Ich gehe davon aus, dass dies die beste Option ist, um konsistent zu bleiben, wenn Sie durch die Sub-View-Controller eines Navigationscontrollers gehen. Ich habe die andere Option jedoch nicht getestet (direkt in den Unter-VC).

Warum funktioniert das und warum ist das der beste Weg zu gehen?

Die Navigationsleiste ist eigentlich immer 44 Punkte hoch (wie Kommentatoren bereits erwähnt haben), aber die 20-Punkte-Statusleiste drückt sie nach unten. Wenn Sie die gesamte Ansicht um denselben Betrag (20) nach unten verschieben, wird das konsistenteste Verhalten sichergestellt. Wann immer Sie versuchen, die UINavigationBar direkt zu manipulieren, wird iOS sehr lange dauern, um diese Änderung umzukehren.

    
Thomas Köhn 07.04.2016 10:41
quelle