2013-09-28 4 views
58

Ich kann die Textfarbe in der Statusleiste in iOS 7 SDK nicht ändern. Derzeit ist es schwarz und ich möchte, dass es für alle meine View-Controller in einem Storyboard weiß ist.Statusleiste Textfarbe iOS 7

Ich habe einige Fragen zu StackOverflow wie THIS, THIS und THIS gesehen, aber sie haben nicht viel geholfen. Kann auch daran liegen, dass ich UIViewControllerBasedStatusBarAppearance in meiner plist-Datei nicht auf YES finden kann.

Kann mir jemand den richtigen Weg erklären, die Textfarbe der Statusleiste für alle View-Controller im Storyboard auf Weiß zu setzen? Danke im Voraus!

Antwort

199

Lassen Sie mich Ihnen ein komplettes Beantworte deine Frage. Das Ändern der Textfarbe der Statusleiste ist sehr einfach, aber in iOS 7 etwas verwirrend, speziell für Neulinge.

Wenn Sie versuchen, die Farbe von Schwarz zu Weiß in StoryBoard zu ändern, indem Sie den Ansichtscontroller auswählen und auf der rechten Seite zu Simulierte Metriken gehen, wird es nicht funktionieren und ich weiß nicht warum. Es sollte funktionieren, indem man so aber irgendwie wie ändert.

Zweitens, Sie finden nicht UIViewControllerBasedStatusBarAppearance -Eigenschaft in Ihrem Plist aber standardmäßig nicht dort. Sie müssen es selbst hinzufügen, indem Sie auf die Schaltfläche + klicken und dann auf NEIN setzen.

ios 7 status bar text color

Schließlich müssen Sie in Ihrem AppDelegate.m Datei gehen und die folgenden in didFinishLaunchingWithOptions Methode, fügen Sie die folgende Zeile hinzu:

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; 

Dies wird die Farbe Weiß für alle ändern Ihre View-Controller. Hoffe das hilft!

+3

KC., Ich habe getan, wie Sie geschrieben haben und alles funktioniert gut. Aber wenn ich zum Beispiel die Kamera in meiner App öffne, setzt sie die Textfarbe der Statusleiste auf schwarz, und wenn ich die Kamera auswähle, hat die Statusleiste in meiner App schwarzen Text. Ich habe versucht, Farbe zu setzen, indem ich - (UIStatusBarStyle) preferredStatusBarStyle in meinen View-Controllern verwende. Aber aus unbekannten Gründen wird es nicht angerufen. Und für jetzt habe ich keine Lösung gefunden. – Oleg

+3

Ich habe das gleiche Problem wie Oleg. Scheint, dass die Bildauswahl für Äpfel die Standardeinstellung überschreibt, wenn sie auf diese Weise behandelt wird, und weigert sich, nach Abschluss der Änderung zurückzukehren. – MattCheetham

+0

Ich sehe das gleiche, wenn ich Bildauswahl Popover auf dem iPad öffne. Es stimmt auch mit meinen Ansichtskoordinaten überein, vorausgesetzt, es gibt eine Navigationsleiste. Der Fix ist nur, um alles zurückzusetzen, nachdem das Popover geschlossen wurde. – user1055568

16

Es ist YES standardmäßig, so dass Sie es nicht sehen. Sie müssen

UIViewControllerBasedStatusBarAppearance 

zu Ihrem plist hinzuzufügen und es zu NO gesetzt.

Dann können Sie

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; 
+0

'setStatusBarStyle:' veraltet ist: zuerst in iOS 9.0 veraltet - Verwenden - [UIViewController preferredStatusBarStyle] –

42

rufen Wenn Sie UIViewControllerBasedStatusBarAppearance suchen sind, müssen Sie das kleine Pluszeichen klicken, die angezeigt werden, wenn Sie über das Root-Element in Ihrer plist Datei schweben.

plist file

Sobald Sie das tun, wird eine neue Zeile angezeigt - wählen Sie „View Controller-basierte Statusleiste Aussehen“ aus der Dropdown-Liste und legen NO als Wert. (Das freundliche Name wird intern als UIViewControllerBasedStatusBarAppearance deklariert)

Als nächstes rufen Sie die folgende Methode in AppDelegate sollte die Statusleiste Farbe weiß für alle View-Controller gesetzt:

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; 
23

Stellen Sie die UIViewControllerBasedStatusBarAppearance auf YES in der plist

In viewDidLoad tun ein [self setNeedsStatusBarAppearanceUpdate];

die folgende Methode hinzu:

-(UIStatusBarStyle)preferredStatusBarStyle{ 
    return UIStatusBarStyleLightContent; 
} 
+0

Komisch die vorherigen Antworten funktionierten für mich zuvor. Trotzdem danke! Das hat für mich funktioniert. BTW wenn das nur auf viewdidload aktualisiert wird muss ich dieses update also jede Ansicht aufrufen? – Teffi

+0

das funktionierte für mich, aber die Lösung von KC funktionierte nicht so gut wie Storyboard-Methode nicht funktioniert –

+0

Das funktioniert, wenn Sie Bildschirme unterschiedlicher Helligkeit haben – stackOverFlew