In iOS 7 wurde das UIStatusBar
so gestaltet, dass es mit der folgenden Ansicht verschmilzt:
(GUI entworfen von Tina Tavčar )
Es ist cool, aber es wird Ihre Ansicht etwas durcheinander bringen, wenn Sie etwas im oberen Teil Ihrer Ansicht haben, und es wird mit der Statusleiste überlappt.
Gibt es eine einfache Lösung (z. B. das Festlegen einer Eigenschaft in info.plist), mit der sich die Funktionsweise [nicht überlappend] wieder in iOS6 ändern lässt?
Ich weiß, dass eine einfachere Lösung darin besteht,
self.view.center.x
+ 20 Punkte für jeden einzelnen Ansichts-Controller zu haben, aber wenn Sie diese ändern, werden andere Dimensionen durcheinander gebracht (ein anderesself.view.center.x
kann zu Problemen bei benutzerdefinierten Abschnitten usw. führen), und plötzlich wird dies zu einer mühsamen Aufgabe am besten vermieden werden.Ich bin wirklich froh, wenn mir jemand eine Einzeiler-Lösung dafür anbieten kann.
PS Ich weiß, dass ich die Statusleiste ausblenden kann, indem ich Dinge wie habe
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
In der didFinishLaunchingWithOptions
Methode, aber das ist eine Problemumgehung, eine Verknüpfung, die das Problem vermeidet, daher halte ich das nicht für eine echte Lösung.
UIStatusBarDefault
für die Statusleiste haben, wird der Inhalt nur schwarz. Es wird nicht so funktionieren, wie es in iOS6 funktioniert.Antworten:
Dies ist ein Cross-Posting aus einem Blog-Beitrag, den ich geschrieben habe , aber hier ist der vollständige Überblick über Statusleisten, Navigationsleisten und Controller für die Containeransicht unter iOS 7:
Es gibt keine Möglichkeit, das Layout der Statusleiste im iOS 6-Stil beizubehalten. Die Statusleiste überlappt Ihre Anwendung unter iOS 7 immer
Verwechseln Sie das Erscheinungsbild der Statusleiste nicht mit dem Layout der Statusleiste. Das Erscheinungsbild (hell oder standardmäßig) hat keinen Einfluss darauf, wie die Statusleiste angeordnet ist (Rahmen / Höhe / Überlappung). Es ist auch wichtig zu beachten, dass die Systemstatusleiste keine Hintergrundfarbe mehr hat. Wenn die API auf UIStatusBarStyleLightContent verweist, bedeutet dies weißen Text auf klarem Hintergrund. UIStatusBarStyleDefault ist schwarzer Text auf klarem Hintergrund.
Das Erscheinungsbild der Statusleiste wird über einen von zwei sich gegenseitig ausschließenden Basispfaden gesteuert: Sie können diese entweder auf herkömmliche Weise programmgesteuert festlegen, oder UIKit aktualisiert das Erscheinungsbild für Sie basierend auf einigen neuen Eigenschaften von UIViewController. Die letztere Option ist standardmäßig aktiviert. Überprüfen Sie den Plist-Wert Ihrer App auf "ViewController-basiertes Erscheinungsbild der Statusleiste", um festzustellen, welchen Sie verwenden. Wenn Sie diesen Wert auf YES setzen, muss jeder Ansichts-Controller der obersten Ebene in Ihrer App (außer einem Standard-UIKit-Container-Ansichts-Controller) den bevorzugten StatusBarStyle überschreiben und entweder den Standard- oder den Lichtstil zurückgeben. Wenn Sie den Plist-Wert auf NO bearbeiten, können Sie das Erscheinungsbild der Statusleiste mithilfe der bekannten UIApplication-Methoden verwalten.
UINavigationController ändert die Höhe seiner UINavigationBar auf 44 Punkte oder 64 Punkte, abhängig von einer ziemlich seltsamen und nicht dokumentierten Reihe von Einschränkungen. Wenn der UINavigationController erkennt, dass der obere Rand des Ansichtsrahmens visuell an den oberen Rand des UIWindow angrenzt, zeichnet er die Navigationsleiste mit einer Höhe von 64 Punkten. Wenn die Oberseite der Ansicht nicht an die Oberseite des UIWindow angrenzt (auch wenn sie nur um einen Punkt abweicht), zeichnet sie die Navigationsleiste auf „traditionelle“ Weise mit einer Höhe von 44 Punkten. Diese Logik wird von UINavigationController ausgeführt, auch wenn sich mehrere untergeordnete Elemente in der View Controller-Hierarchie Ihrer Anwendung befinden. Es gibt keine Möglichkeit, dieses Verhalten zu verhindern.
Wenn Sie ein Hintergrundbild für eine benutzerdefinierte Navigationsleiste mit einer Höhe von nur 44 Punkten (88 Pixel) angeben und die Grenzen der Ansicht des UINavigationControllers mit den Grenzen des UIWindow übereinstimmen (wie in Nr. 4 erläutert), zeichnet der UINavigationController Ihr Bild in den Rahmen (0,20,320) , 44), wobei 20 Punkte undurchsichtigen schwarzen Bereichs über Ihrem benutzerdefinierten Bild verbleiben. Dies kann Sie verwirren, wenn Sie glauben, ein kluger Entwickler zu sein, der Regel 1 umgangen hat, aber Sie irren sich. Die Navigationsleiste ist immer noch 64 Punkte hoch. Das Einbetten eines UINavigationControllers in eine Hierarchie der Folienansicht macht dies sehr deutlich.
Beachten Sie die verwirrend benannten Kanten .ForExtendedLayout-Eigenschaft von UIViewController. Das Anpassen von KantenForExtendedLayout führt in den meisten Fällen zu nichts. UIKit verwendet diese Eigenschaft nur, wenn Sie einem UINavigationController einen Ansichts-Controller hinzufügen. Der UINavigationController verwendet KantenForExtendedLayout, um zu bestimmen, ob der untergeordnete Ansichts-Controller unter der Navigationsleiste / dem Statusleistenbereich sichtbar sein soll. Das Festlegen von KantenForExtendedLayout auf dem UINavigationController selbst ändert nichts daran, ob der UINavigationController über einen Navigationsleistenbereich mit einer Höhe von 44 oder 64 Punkten verfügt. Siehe # 4 für diese Logik. Eine ähnliche Layoutlogik gilt für den unteren Bereich Ihrer Ansicht, wenn Sie eine Symbolleiste oder einen UITabBarController verwenden.
Wenn Sie lediglich verhindern möchten, dass Ihr benutzerdefinierter untergeordneter Ansichtscontroller die Navigationsleiste in einem UINavigationController überlappt, setzen Sie edgeForExtendedLayout auf UIRectEdgeNone (oder zumindest auf eine Maske, die UIRectEdgeTop ausschließt). Stellen Sie diesen Wert so früh wie möglich im Lebenszyklus Ihres View Controllers ein.
UINavigationController und UITabBarController versuchen auch, die contentInsets von Tabellenansichten und Sammlungsansichten in ihrer Unteransichtshierarchie aufzufüllen. Dies geschieht ähnlich wie in der Statusleistenlogik von # 4. Es gibt eine programmatische Möglichkeit, dies zu verhindern, indem für Ihre Tabellenansichten und Sammlungsansichten automatischAdjustsScrollViewInsets auf NO gesetzt wird (standardmäßig YES). Dies stellte Whisper und Riposte vor einige ernsthafte Probleme, da wir contentInset-Anpassungen verwenden, um das Layout von Tabellenansichten als Reaktion auf Symbolleisten- und Tastaturbewegungen zu steuern.
Um es noch einmal zu wiederholen: Es gibt keine Möglichkeit, zur Layoutlogik der Statusleiste im iOS 6-Stil zurückzukehren. Um dies zu approximieren, müssen Sie alle Ansichtscontroller Ihrer App in eine Containeransicht verschieben, die um 20 Punkte vom oberen Bildschirmrand versetzt ist. Hinter der Statusleiste bleibt eine absichtlich schwarze Ansicht, um das alte Erscheinungsbild zu simulieren. Dies ist die Methode, die wir in Riposte und Whisper angewendet haben.
Apple ist sehr bemüht, sicherzustellen, dass Sie nicht versuchen, # 9 zu tun. Sie möchten, dass wir alle unsere Apps neu gestalten, um die Statusleiste zu unterstreichen. Es gibt jedoch viele überzeugende Argumente, sowohl aus Gründen der Benutzererfahrung als auch aus technischen Gründen, warum dies nicht immer eine gute Idee ist. Sie sollten das tun, was für Ihre Benutzer am besten ist, und nicht einfach der Laune der Plattform folgen.
quelle
Es gibt anscheinend keine Möglichkeit, die iOS7-Statusleiste auf die Funktionsweise in iOS6 zurückzusetzen.
Wir können jedoch immer einige Codes schreiben und die Statusleiste in iOS6-ähnlich umwandeln. Dies ist der kürzeste Weg, den ich finden kann:
Setzen Sie
UIViewControllerBasedStatusBarAppearance
aufNO
ininfo.plist
(Um Opt - out der mit View - Controller die Statusleiste Stil anpassen , so dass wir die Statusleiste Stil unter Verwendung des UIApplicationstatusBarStyle Verfahren eingestellt werden.)In AppDelegate ist
application:didFinishLaunchingWithOptions
, Calldamit:
Überprüfen Sie, ob es sich um iOS 7 handelt.
Stellen Sie den Inhalt der Statusleiste im Gegensatz zu UIStatusBarStyleDefault auf Weiß ein.
Vermeiden Sie, dass Unteransichten, deren Rahmen über die sichtbaren Grenzen hinausragen, angezeigt werden (für Ansichten, die von oben in die Hauptansicht animiert werden).
Erstellen Sie die Illusion, dass die Statusleiste wie in iOS 6 Platz beansprucht, indem Sie den Fensterrahmen der App verschieben und seine Größe ändern.
Für Apps mit Bildschirmrotation
Verwenden Sie NSNotificationCenter, um Orientierungsänderungen durch Hinzufügen zu erkennen
in
if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_6_1)
und erstellen Sie eine neue Methode in AppDelegate:Wenn sich die Ausrichtung ändert, wird eine switch-Anweisung ausgelöst, um die Bildschirmausrichtung der App (Hochformat, Auf dem Kopf stehend, Querformat links oder Querformat rechts) zu erkennen und den Fensterrahmen der App zu ändern, um die Illusion der iOS 6-Statusleiste zu erzeugen.
So ändern Sie die Hintergrundfarbe Ihrer Statusleiste:
Hinzufügen
in ,
AppDelegate.h
umbackground
eine Eigenschaft in der Klasse und zu verhindern , ARC aus ausplanen es. (Sie müssen es nicht tun, wenn Sie ARC nicht verwenden.)Danach müssen Sie nur noch das UIWindow erstellen in
if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_6_1)
:Vergiss nicht
@synthesize background;
danach@implementation AppDelegate
!quelle
Ich habe das Problem mit dem folgenden Code gelöst. Dies dient zum Hinzufügen einer Statusleiste. didFinishLaunchingWithOptionsFür Interface Builder gilt dies, wenn Sie mit iOS 6 öffnen. es beginnt bei 0 Pixel.Hinweis: iOS 6/7-Deltas werden nur angezeigt, wenn Sie im Detailbereich "Dateiinspektor" (Symbol ganz links) für "View Autolayout" für den View Controller deaktivieren.quelle
LÖSUNG:
Stellen Sie es in Ihrem Viewcontroller oder im Rootviewcontroller ein, indem Sie die Methode überschreiben:
quelle
Hier ein weiterer Ansatz für Projekte, die das Storyboard in großem Umfang nutzen:
TOR:
Ziel dieses Ansatzes ist es, in iOS7 den gleichen Statusleistenstil wie in iOS6 wiederherzustellen (siehe Fragentitel "iOS 7-Statusleiste Zurück zum iOS 6-Stil?").
ZUSAMMENFASSUNG:
Um dies zu erreichen, verwenden wir das Storyboard so oft wie möglich, indem wir UI-Elemente, die von der Statusleiste (unter iOS 7) überlappt werden, nach unten verschieben und Deltas verwenden, um die nach unten gerichtete Layoutänderung für iOS 6.1 oder früher rückgängig zu machen. Der resultierende zusätzliche Speicherplatz in iOS 7 wird dann von einer UIView belegt, wobei die Hintergrundfarbe auf eine Farbe unserer Wahl eingestellt ist. Letzteres kann im Code oder mithilfe des Storyboards erstellt werden (siehe ALTERNATIVEN unten).
ANNAHMEN:
Um das gewünschte Ergebnis zu erzielen, wenn Sie die folgenden Schritte ausführen, wird davon ausgegangen, dass
View controller-based status bar appearance
NO eingestellt ist und dassStatus bar style
entweder "Transparenter schwarzer Stil (Alpha von 0,5)" oder "Opaker schwarzer Stil" eingestellt ist. Beide Einstellungen finden Sie in Ihren Projekteinstellungen unter "Info".SCHRITTE:
Fügen Sie dem UIWindow eine Unteransicht hinzu, die als Hintergrund für die Statusleiste dient. Um dies zu erreichen, fügen Sie Ihrem AppDelegate
application: didFinishLaunchingWithOptions:
danach Folgendes hinzumakeKeyAndVisible
Da Sie NUR für iOS 7 programmgesteuert einen Hintergrund hinzugefügt haben, müssen Sie das Layout Ihrer UI-Elemente, die von der Statusleiste überlappt werden, entsprechend anpassen, während das Layout für iOS6 beibehalten wird. Gehen Sie dazu folgendermaßen vor:
Use Autolayout
das Kontrollkästchen für Ihr Storyboard deaktiviert ist (dies liegt daran, dass ansonsten "iOS 6/7 Deltas" im Größeninspektor nicht angezeigt wird). Um dies zu tun:ALTERNATIVEN:
Um in Storyboard-lastigen Projekten noch weniger Code hinzuzufügen und den Hintergrund der Statusleiste automatisch zu drehen, anstatt programmgesteuert einen Hintergrund für Ihre Statusleiste hinzuzufügen, können Sie jedem Ansichts-Controller, der sich ganz oben in der Hauptansicht des Ansichtscontrollers befindet, eine farbige Ansicht hinzufügen. Sie würden dann das Höhendelta dieser neuen Ansicht auf den gleichen negativen Wert wie die Höhe Ihrer Ansicht ändern (damit sie unter iOS 6 verschwindet).
Der Nachteil dieser Alternative (obwohl sie angesichts der Kompatibilität mit Autorotaten möglicherweise vernachlässigbar ist) ist die Tatsache, dass diese zusätzliche Ansicht nicht sofort sichtbar ist, wenn Sie Ihr Storyboard für iOS 6 anzeigen. Sie würden nur wissen, dass sie vorhanden ist, wenn Sie sich das " Dokumentumriss "des Storyboards.
quelle
Wenn Sie nicht möchten, dass Ihre Ansichtscontroller von der Statusleiste (und den Navigationsleisten) überlappt werden, deaktivieren Sie das Kontrollkästchen "Kanten unter oberen Balken erweitern" im Interface Builder in Xcode 5.
quelle
Apple hat technische Fragen und Antworten veröffentlicht. QA1797: Verhindern, dass die Statusleiste Ihre Ansichten abdeckt . Es funktioniert gut für die iOS 6 und iOS 7 Versionen.
quelle
Ich habe viele, viele, viele und viele Tutorials angesehen, um dieses verdammte Problem zu beheben. Aber keiner von ihnen funktioniert! Hier ist meine Lösung, und sie funktioniert für mich:
Die Logik ist einfach. Ich verschiebe alle Kinderansichten auf die Selbstansicht mit 20 Pixeln. Das ist alles. Dann wird der Screenshot genauso angezeigt wie iOS 6. Ich hasse die iOS7 Statusleiste! ~ "~
quelle
Eine kleine Alternative zu Archy Holts Antwort, etwas einfacher:
ein. Setzen Sie
UIViewControllerBasedStatusBarAppearance
aufNO
in info.plistb. In
AppDelegate
'sapplication:didFinishLaunchingWithOptions:
rufen Sie an:Und fügen Sie die Methode hinzu:
Sie können auch eine Unterklasse
UIWindow
in Betracht ziehen , um sichUIApplicationDidChangeStatusBarOrientationNotification
selbst zu behandeln .quelle
Ich habe dies in allen meinen View Controllern verwendet, es ist einfach. Fügen Sie diese Zeilen in alle Ihre viewDidLoad-Methoden ein:
quelle
Versuchen Sie diese einfache Methode ....
Schritt 1 : In Single wechseln
viewController
Schritt 2 : Ändern der gesamten Anwendung
Schritt 3 : Fügen Sie dies jeweils hinzu
viewWillAppear
, um diestatusbar
Höhe für anzupasseniOS7
quelle
Im Interface Builder gibt es eine Option, die die Eigenschaft iOS 6/7 Delta aufruft, um das Offset-Problem zu lösen.
Schauen Sie sich das in der Frage zum Stapelüberlauf an. Interface Builder: Wofür sind die Layout iOS 6/7-Deltas von UIView gedacht? .
quelle
Ich habe eine Statusleiste wie iOS 6 in iOS 7 erreicht.
Setzen Sie UIViewControllerBasedStatusBarAppearance in info.plist auf NO
Fügen Sie diesen Code in die
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
Methode einEs kann alle Ihre Ansichten um 20 Pixel nach unten drücken. Um dies zu überwinden, verwenden Sie den folgenden Code in der
-(void)viewDidAppear:(BOOL)animated
MethodeSie müssen den Wert für windowHeight Userdefaults nach der Fensterzuweisung in der didFinishLauncing-Methode wie festlegen
quelle
height
auf 64 anstatt auf 44 zu setzen. Dann wird Ihre Leiste wie in Apples Apps ganz nach oben verschoben .Wenn Sie den Interface Builder verwenden, versuchen Sie Folgendes:
In Ihrer xib-Datei:
1) Wählen Sie die Hauptansicht aus und stellen Sie die Hintergrundfarbe auf Schwarz ein (oder auf die Farbe, die die Statusleiste haben soll)
2) Stellen Sie sicher, dass der Hintergrund eine in sich geschlossene Unteransicht ist, die als untergeordnetes Element der obersten Ebene der Controller-Ansicht positioniert ist.
Verschieben Sie Ihren Hintergrund, um ein direktes untergeordnetes Element der Ansicht des Controllers zu werden. Überprüfen Sie im Bereich "Autosizing", ob Sie alle Rahmenkanten gesperrt und beide Flexibilitätsachsen aktiviert haben. Wenn es sich um eine UIImageView handelt, stellen Sie den Inhaltsmodus auf "Skalieren", um ihn zu füllen. Programmatisch bedeutet dies, dass contentMode auf UIViewContentModeScaleToFill gesetzt ist und die Maske für die automatische Größenänderung auf (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight) gesetzt ist.
3) Verschieben Sie nun alles, was oben gesperrt ist, um 20 Punkte nach unten und setzen Sie ein iOS 6/7-Delta Y auf -20.
Alle untergeordneten Elemente der obersten Ebene, die im Autosizing-Bedienfeld an den oberen Frame gebunden sind, müssen um 20 Punkte nach unten verschoben und auf iOS 6/7 Delta Y auf -20 eingestellt werden. (Cmd wähle alle aus und klicke 20 Mal auf den Pfeil nach unten - gibt es einen besseren Weg für jemanden?)
4) Passen Sie die Delta-Höhe von iOS 6/7 für alle oben genannten Elemente mit flexibler Höhe an. Für alle Elemente, die oben und unten am Rahmen verriegelt waren und deren flexible Höhe im Autosizing-Bereich aktiviert war, muss auch die Delta-Höhe für iOS 6/7 auf 20 eingestellt sein. Dies schließt die oben erwähnte Hintergrundansicht ein. Dies mag nicht intuitiv erscheinen, ist jedoch aufgrund der Reihenfolge, in der diese angewendet werden, erforderlich. Die Rahmenhöhe wird zuerst eingestellt (basierend auf dem Gerät), dann werden die Deltas angewendet, und schließlich werden die Masken für die automatische Größenanpassung basierend auf den Versatzpositionen aller untergeordneten Rahmen angewendet - überlegen Sie es sich ein wenig, es wird Sinn machen.
5) Schließlich benötigen Gegenstände, die am unteren Rahmen, aber nicht am oberen Rahmen befestigt waren, überhaupt keine Deltas.
Dadurch erhalten Sie die identische Statusleiste in iOS7 und iOS6.
Wenn Sie dagegen das iOS7-Design unter Beibehaltung der iOS6-Kompatibilität wünschen, setzen Sie die Delta-Y / Delta-Höhenwerte für die Hintergrundansicht auf 0.
Weitere Informationen zur iOS7-Migration finden Sie im vollständigen Beitrag: http://uncompiled.blogspot.com/2013/09/legacy-compatible-offsets-in-ios7.html
quelle
Meine Lösung bestand darin, unter
UIView
iOS 7 eine mit einer Höhe von 20 Punkten über dem Fenster hinzuzufügen . Dann habe ich in meiner AppDelegate-Klasse eine Methode erstellt, um den Hintergrund der Statusleiste "fest" anzuzeigen / auszublenden. Inapplication:didFinishLaunchingWithOptions:
:Dann habe ich eine Methode zum Ein- und Ausblenden des schwarzen Hintergrunds der Statusleiste erstellt:
Jetzt muss ich nur noch anrufen,
[appDelegate showSolidStatusBar:YES]
wenn es nötig ist.quelle
Dies kann ein überwältigendes Problem sein, wenn Sie das automatische Layout verwenden, da Sie Frames nicht mehr direkt bearbeiten können. Es gibt eine einfache Lösung ohne zu viel Arbeit.
Am Ende habe ich eine Utility-Methode in eine Utility-Klasse geschrieben und sie von allen View-Controllern aus aufgerufen
viewDidLayoutSubviews
.Überschreiben Sie Ihre
viewDidLayoutSubviews
Methode im View Controller, wo Sie die Statusleiste wünschen. Es wird Sie durch die Last von Autolayout bringen.quelle
Am einfachsten ist es, ein älteres SDK auf Ihrem neuesten Xcode zu installieren.
Wie installiere ich ein älteres SDK auf dem neuesten Xcode?
Sie können das iOS 6.1 SDK unter http://www.4shared.com/zip/NlPgsxz6/iPhoneOS61sdk.html herunterladen oder einen älteren Xcode herunterladen und das SDK aus dessen Inhalt herunterladen
Entpacken Sie diesen Ordner und fügen Sie ihn in /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs ein
Starten Sie den xcode neu.
Hoffe es hilft dir. Es hat bei mir funktioniert =)
quelle
Als mit
presentViewController:animated:completion:
vermasselten diewindow.rootViewController.view
ich das , musste ich einen anderen Ansatz für dieses Problem finden. Ich habe es endlich geschafft, mit Modalen und Rotationen zu arbeiten, indem ich die UIView meines rootViewControllers unterklassifiziert habe..h
.m
Sie haben jetzt eine starke Problemumgehung für iOS7-Animationen.
quelle
Ich bin zu spät für diese Antwort, aber ich möchte nur mitteilen, was ich getan habe, was im Grunde die einfachste Lösung ist
Zuallererst-> Gehen Sie zu Ihrer
info.plist
Datei und fügen Sie den Statusleistenstil hinzu-> Transparenter schwarzer Stil (Alpha von 0,5)Jetzt geht es los: -
Fügen Sie diesen Code in Ihre AppDelegate.m ein
quelle
Meine sehr einfache Lösung (vorausgesetzt, Sie unterstützen nur die vertikale Ausrichtung) besteht darin, die Grenzen des Anwendungsfensters für iOS-Versionen unter 7 in der Methode didFinishLaunchingWithOptions des App-Delegaten neu zu definieren:
quelle
Sie können die Statusleiste alle zusammen ausblenden. Ihre App wird also im Vollbildmodus angezeigt. Ich denke, das ist das Beste, was Sie bekommen werden.
UIStatusBarStyleNone
oder in den Zieleinstellungen einstellen.quelle
Schritte zum Ausblenden der Statusleiste in iOS 7:
1.Gehen Sie zu Ihrer Anwendungsinfo.plist-Datei.
2.Und Set, View Controller-basiertes Statusleisten-Erscheinungsbild: Boolean NO
Hoffe, ich habe das Problem mit der Statusleiste gelöst .....
quelle
Um weiterhin mit setStatusBarHidden zu arbeiten: Ich benutze diese Kategorie:
quelle
Ich fand hier die besten Alternativen und Lösungen für dieses Problem mit der Navigationsleiste in iOS7!
http://www.appcoda.com/customize-navigation-status-bar-ios-7/
Ich hoffe, es wird alle unsere Fragen und Sorgen klären.
quelle
Dies ist möglicherweise zu spät zum Teilen, aber ich habe etwas beizutragen, das jemandem helfen könnte. Ich habe versucht, die UINavigationBar in eine Unterklasse einzuteilen, und wollte, dass sie wie ios 6 mit schwarzer Statusleiste und Statusleisten-Text in Weiß aussieht.
Hier ist, was ich dafür gefunden habe
Dadurch wurde der Hintergrund meiner Statusleiste schwarz, der Text der Statusleiste weiß und die Farbe der Navigationsleiste weiß.
iOS 9.3, XCode 7.3.1
quelle