UIStatusBarStyle PreferredStatusBarStyle funktioniert nicht unter iOS 7
In meinem iPhone-Anwendung Xcode 5 für iOS 7 ich UIViewControllerBasedStatusBarAppearance=YES
im info.plist
, und in meinem ViewController
ich habe diesen code:
-(UIStatusBarStyle) preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}
Aber die status bar ist immer noch schwarz vor dem schwarzen hintergrund.
Ich weiß, das ist möglich, dies zu ändern, app-breit-Einstellung UIViewControllerBasedStatusBarAppearance=NO
im info.plist
, aber ich wirklich brauchen, um zu ändern, dies auf einen viewController
durch viewController
Grundlage zur Laufzeit.
Kommentar zu dem Problem
Hi, ich habe das gleiche Problem wie Sie erwähnten in Frage. Hast du die Lösung? Bitte geben Sie mir das. Kommentarautor: Noundla
Sie können einen Blick auf: Ändern von Anwendungen status bar text Farbe Kommentarautor: 1218GG
InformationsquelleAutor der Frage Andrew Smith | 2013-10-01
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Entdeckte ich, dass, wenn Ihr ViewController in einem navigationController dann der navigationController die
navigationBar.barStyle
bestimmt die statusBarStyle.Einstellung Ihrer navigationBar ist
barStyle
zuUIBarStyleBlackTranslucent
geben weiße status bar text (dh.UIStatusBarStyleLightContent
), undUIBarStyleDefault
geben black status bar text (dh.UIStatusBarStyleDefault
).Hinweis , dies gilt auch dann, wenn Sie völlig ändern, das ist die Farbe der navigationBar über seine
barTintColor
.InformationsquelleAutor der Antwort mxcl
OK, hier ist der trick. Sie tun müssen, fügen Sie die Taste "View controller-based status bar" und setzen Sie den Wert auf Nein.
Dies ist kontraproduktiv zu dem, was es scheint, dass die Bedeutung dieses Schlüssels ist, aber selbst wenn Sie den Wert auf
No
Sie können immer noch das Aussehen der Statusleiste, und ob Sie es zeigt oder nicht, in jedem view-controller. So wirkt es wie "ja" aber "Nein"!Nun bekomme ich die status bar white oder dark.
InformationsquelleAutor der Antwort Andrew Smith
Für
preferredStatusBarStyle()
arbeiten innerhalbUINavigationController
undUITabBarController
ich den folgenden code hinzu, die den bevorzugten status-bar-style aus dem aktuell sichtbaren view-controller.Für Swift 3 das sind nicht die Methoden, sondern Eigenschaften:
Nutzung
InformationsquelleAutor der Antwort Daniel Wood
Ich kann zu uns kommen, ein bisschen spät, aber falls jemand auf der Suche nach einer funktionierenden und verifizierten app-weite Lösung.
@mxcl korrekt zu beschreiben, warum dies geschieht. Um es zu korrigieren, erstellen wir einfach eine Verlängerung (oder eine Kategorie in obj-c), der überschreibt die preferredSatusBarStyle () - Methode des UINavigationController. Hier ist ein Beispiel in Swift:
Diesen code einfach extrahiert die erste view-controller (der root-view-controller) und packt es (in obj-c nur schauen, dass es nicht null). Wenn das entpacken erfolgreich ist (nicht null), dann schnappen wir uns die rootViewControllers preferredStatusBarStyle. Ansonsten haben wir nur wieder das Standard.
Hoffe, dies hilft jemand, der es mal brauchen könnte.
InformationsquelleAutor der Antwort Kyle Begeman
Mehr Details in der Antwort akzeptiert, fügen Sie die folgende Zeile in Ihre app Delegat
didFinishLaunchingWithOptions:
Methode:Dann, in Ihrem Info.plist hinzufügen
View controller-based status bar appearance
und legen Sie es aufNO
.Ich glaube, das ist, wie es getan werden sollte, NICHT aus dem navigation-controller, wenn Sie wollen den gleichen status bar Farbe für die gesamte app. Möglicherweise haben Bildschirme, die sind nicht unbedingt eingebettet in eine
UINavigationController
oder eine andereUINavigationController
Unterklasse woanders, und andere Dinge.BEARBEITEN: Sie können es auch tun, ohne die Eingabe von code: https://stackoverflow.com/a/18732865/855680
InformationsquelleAutor der Antwort Matt Quiros
In viewDidLoad schreiben Sie einfach das
genau das zu tun und es wird funktionieren
kann u bitte versuchen Sie, diese
Eine weitere Sache, die ich gesehen habe in deiner Frage, dass
Sie schrieb die Methode, wie diese
aber es sollte so sein
InformationsquelleAutor der Antwort Bhavik Kama
Hier ist, wie ich es gelöst. In der Regel der navigationController oder tabBarController sind diejenigen, die Entscheidung, die das Aussehen der Statusleiste ausgeblendet, Farbe, etc).
So landete ich also Unterklassen der navigation-controller und überschreiben preferredStatusBarStyle. wenn die aktuell sichtbare ViewContorller implementiert StatusBarStyleHandler ich Fragen, für den Wert verwendet werden, wie der Stil, wenn nicht, habe ich gerade wieder einen default-Wert.
Den Weg, lösen Sie eine Aktualisierung der status-bar Aussehen, indem Sie
setNeedsStatusBarAppearanceUpdate
auslöstpreferredStatusBarStyle
wieder und UI-updates nach, was die Methode zurückgibtDann Verwendung
InformationsquelleAutor der Antwort aryaxt
Selbst mit all den Antworten hier, ich wusste immer noch nicht genau die Lösung gefunden für mich, begann sich aber mit der Antwort von Daniel. Was landete ich mit war:
in der navigation-Controller (ähnlich wie für Reiter, nur selectedViewController). Und dann wird es respektieren:
In jedem view-controller, es sei denn, Sie legen Sie es anders. Ich brauche zu nennen
setNeedsStatusBarAppearanceUpdate()
überall, es nur updates, wenn Sie kommen zu jeder view-controller.InformationsquelleAutor der Antwort Andrew Plummer
1) Eine Einstellung für das gesamte Projekt:
Falls vorhanden, entfernen Sie
UIViewControllerBasedStatusBarAppearance
Schlüssel-Wert-paar aus deiner info.plist, oder legen SieNO
ohne es zu entfernen. Wenn es nicht verfügbar ist in Ihrer info.plist, nichts zu tun. Standardmäßig istNO
für diese Eigenschaft.Fügen Sie folgenden code zu Ihrem AppDelegate.m:
2) verschiedene Einstellungen für Verschiedene View-Controller:
Hinzufügen
UIViewControllerBasedStatusBarAppearance
Schlüssel-Wert-paar zu Ihrer info.plist und legen Sie es aufYES
.Wenn Ihr View-Controller ist nicht einbetten in der Navigation-Controller. Lassen Sie uns sagen, MyViewController. fügen Sie einfach folgenden code auf Ihre MyViewController.m-Datei. Wenn Ihr View-Controller ist das einbetten in der Navigation-Controller, erstellen Sie eine neue Cocoa Touch Class aus und machen es eine Unterklasse von UINavigationController. Lassen Sie uns sagen, MyNC. Wählen Sie Navigation-Controller-Blick auf das Storyboard, die im rechten Fensterbereich; Dienstprogramme -> Identity-Inspector - > "Benutzerdefiniert" - Klasse -> Klasse, Typ "MyNC". Nach dem verknüpfen der Storyboard-Ansicht mit Ihren "MyNC" Cocoa Touch Class, fügen Sie folgenden code zu Ihrer MyNC.m:
InformationsquelleAutor der Antwort Fatih Aksu
Wenn in den Fall, Sie wollten, ausblenden die Statusleiste während der splashScreen wollte sich aber ändern Sie den Stil, Licht von Inhalten (StatusBarInitiallyHidden auf Plist zu sein, hat KEINE ausblenden statusBar auf splash), können Sie dieses appDelegate ist didFinishLaunchingWithOptions-Methode zu ändern, zu lightContent.
InformationsquelleAutor der Antwort aalesano
swift Beispiel
in AppDelegate.swift
in der info.plist View controller-based status bar appearance: KEINE
InformationsquelleAutor der Antwort fyalavuz
Wenn Sie
NavigationController
Sie können eine UnterklasseNavigationController
so, dass es berät seine child-view-controller//MyCustomNavigationController
InformationsquelleAutor der Antwort onmyway133
Können Sie die status-bar-Stil. Es ähnelt der status-bar wie IOS 6 und darunter.
Fügen Sie diese Methoden in Ihrer view-controller
und rufen diese Methode aus Sicht laden wie diesem
InformationsquelleAutor der Antwort Ganapathy
Für swift 3, in Ihrer UIViewController:
InformationsquelleAutor der Antwort Mavrick Laakso