Meine Anwendung hat einen dunklen Hintergrund, aber in iOS 7 wurde die Statusleiste transparent. Ich kann dort also nichts sehen, nur die grüne Batterieanzeige in der Ecke. Wie kann ich die Textfarbe der Statusleiste wie auf dem Startbildschirm in Weiß ändern?
990
Antworten:
Setzen Sie das
UIViewControllerBasedStatusBarAppearance
aufYES
in der .plist-Datei.In der
viewDidLoad
do a[self setNeedsStatusBarAppearanceUpdate];
Fügen Sie die folgende Methode hinzu:
Hinweis : Dies funktioniert nicht für Controller im Inneren
UINavigationController
, siehe Tysons Kommentar unten :)Swift 3 - Dies funktioniert im Inneren der Controller
UINavigationController
. Fügen Sie diesen Code in Ihren Controller ein.Swift 5 und SwiftUI
Erstellen Sie für SwiftUI eine neue Swift-Datei mit dem Namen
HostingController.swift
Ändern Sie dann die folgenden Codezeilen in der
SceneDelegate.swift
zu
quelle
Alternativ können Sie das Erscheinungsbild der View-Controller-basierten Statusleiste deaktivieren:
View controller-based status bar appearance
zuNO
IhremInfo.plist
.[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
Hinweis: Diese Methode ist in iOS9 veraltet. Verwenden
preferredStatusBarStyle
Sie stattdessen auf dem UIViewController. (siehe Apple Developer Library )quelle
Sie können dies tun, ohne eine Codezeile zu schreiben!
Gehen Sie wie folgt vor, um den Text der Statusleiste in der gesamten App weiß zu machen
Auf Ihrer Projekt-Plist- Datei:
Transparent black style (alpha of 0.5)
NO
NO
quelle
UIStatusBarStyleLightContent
implist info
JEDOCH aufgerufenTransparent Black
wird, was den gleichen Trick macht :) Außerdem müssen Sie hinzufügen,View controller-based status bar appearance
da es ursprünglich nicht vorhanden ist und es alles ist, was Sie brauchen, um es zum<key>UIStatusBarStyle</key> <string>UIStatusBarStyleLightContent</string> <key>UIViewControllerBasedStatusBarAppearance</key> <false/>
Hinweis: Die meisten Antworten stimmen nicht für iOS 7/8
Setzen Sie in der Info.plist 'Aussehen der Controller-basierten Statusleiste anzeigen' auf NEIN
In AppDelegate hinzufügen
zu
Diese Lösung funktioniert für iOS 7/8
quelle
Für mich ist nichts passiert, wenn ich alle Dinge in den anderen Antworten (und aus anderen Quellen / Dokumentationen) verwendet habe. Was geholfen hat, war, den Navigationsleistenstil in der XIB auf "Schwarz" zu setzen. Dadurch wurde der Text ohne Code in Weiß geändert.
quelle
Nichts davon hat bei mir funktioniert, also hier ist eine funktionierende Lösung ...
In
Info.plist
, fügen Sie eine Zeile:UIViewControllerBasedStatusBarAppearance
und stellen Sie den Wert einNO
.Fügen Sie dann in AppDelegate in
didFinishLaunchingWithOptions
die folgenden Zeilen hinzu:quelle
Sie müssen dafür keinen Code ausführen
Sie müssen den Schlüssel "View Controller-based Status Bar Erscheinungsbild" in info.plist wie folgt hinzufügen:
& setze seinen Werttyp auf Boolean & Wert auf NO. Klicken Sie dann auf Projekteinstellungen, dann auf Registerkarte Allgemein und setzen Sie unter Bereitstellungsinformationen den bevorzugten Statusleistenstil auf .Light wie folgt:
Das ist es.
quelle
Nur zwei Schritte wie folgt:
Schritt 1:
Auf der Registerkarte "Info" unter "
project target
Zeile hinzufügen":UIViewControllerBasedStatusBarAppearance
Wert einstellenNO
.Schritt 2:
Im Projekt
AppDelegate.m
:quelle
Dies funktioniert in Golden Master iOS 7 und Xcode 5 GM Seed und iOS7 SDK, die am 18. September 2013 veröffentlicht wurden (zumindest mit verstecktem Navigationscontroller):
Setzen Sie
the UIViewControllerBasedStatusBarAppearance
aufNO
in derInfo.plist
.ViewDidLoad
Wo möchten Sie in der Methode oder irgendwo den Stil der Statusleiste ändern:[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
quelle
Wenn sich Ihr UIViewController in einem UINavigationController befindet, müssen Sie den BarStyle festlegen:
Die ursprüngliche Antwort ist hier
https://devforums.apple.com/message/844264#844264
quelle
Wenn Sie einen eingebetteten Navigationscontroller über Interface Builder erstellt haben , müssen Sie in einer Klasse, die Ihren Navigationscontroller verwaltet, Folgendes festlegen:
Das sollte alles sein, was Sie brauchen.
quelle
Ich verwende Xcode 6 Beta 5 in einem Swift- Projekt für eine iOS 7-App.
Folgendes habe ich getan und es funktioniert:
info.plist:
quelle
Fügen Sie in AppDelegate.m Folgendes hinzu.
Setzen Sie in der Plist-Datei 'Erscheinungsbild der Controller-basierten Statusleiste anzeigen' auf NEIN.
quelle
Einfach in Appdelegate
quelle
Nun, das funktioniert wirklich wie ein Kinderspiel für mich.
Gehen Sie zu Ihrer App
info.plist
.View controller-based status bar appearance
zuNO
Status bar style
zuUIStatusBarStyleLightContent
Gehen Sie dann zum Delegaten Ihrer App und fügen Sie den folgenden Code ein, in dem Sie den RootViewController Ihres Windows festlegen.
Bingo. Es funktioniert für mich.
quelle
Gehe zu
Project
->Target
,Dann setzen Sie
Status Bar Style
aufLight
. Die Statusleiste wird auf dem Startbildschirm weiß.Dann setzen Sie
View controller-based status bar appearance
gleichNO
inInfo.plist
.quelle
View controller-based status bar appearance equal
,NO
war das Stück, das mir fehlte. Vielen DankIn Swift 3 ist nur mit 2 Schritten sehr einfach. Gehen Sie zu Ihrer info.plist und ändern Sie den Schlüssel
View controller-based status bar appearance
in "NO". Fügen Sie dann im Appdelegate diese Zeile in der Methode didfinishlaunchingwithoptions hinzuDies ist in iOS9 veraltet. Jetzt sollten Sie diese Eigenschaft im rootviewcontroller überschreiben
Dies ist in iOS 9 veraltet. Sollte dies auf dem rootviewcontroller tun
quelle
Mit iOS 7 können einzelne Ansichts-Controller das Erscheinungsbild der Statusleiste bestimmen, wie in der Apple-Entwicklerdokumentation beschrieben:
Das globale Festlegen des Erscheinungsbilds der Statusleiste erfolgt in zwei Schritten.
Zunächst müssen Sie iOS mitteilen, dass Sie das Erscheinungsbild der Statusleiste nicht für jede Ansicht einzeln festlegen möchten.
Dann müssen Sie die Verantwortung übernehmen und den neuen globalen Statusleistenstil festlegen.
Um die Statusleistensteuerung von Ansicht zu Ansicht zu deaktivieren, müssen Sie die
View controller-based status bar appearance
Eigenschaft in festlegenInfo.plist
.Öffnen Sie den Projektnavigator, wählen Sie das Projekt für Ihre iOS-App aus und wählen Sie dann die Registerkarte Info.
Bewegen Sie den Mauszeiger über eine Zeile und klicken Sie dann auf das Pluszeichen, um eine neue Eigenschaft zu Ihrer hinzuzufügen
.plist
.Geben Sie
View controller-based status bar appearance
in das Feld Schlüssel ein und stellen Sie sicher, dass das Feld Typ auf eingestellt istBoolean
. Geben Sie abschließendNO
das Feld Wert ein.Um einen globalen Stil für die Statusleiste festzulegen, fügen Sie auf der Registerkarte "Info" eine weitere Eigenschaft mit dem Schlüssel
Status bar style
, einem Typ vonString
und einem Wert von hinzuOpaque black style
.Hier ist ein Blog-Beitrag mit etwas mehr Details und einem Beispielcode:
http://codebleep.com/setting-the-status-bar-text-color-in-ios-7/
quelle
Sie müssen nichts extra tun, schreiben Sie einfach diesen Code in Ihren viewController und erhalten Sie die Statusleistenfarbe Weiß
quelle
Antwort aktualisiert für für Xcode GM Seed:
In
Info.plist
setzenView controller-based status bar appearance
alsNO
Stellen Sie im Projekt Folgendes ein:
In ViewDidLoad:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
quelle
Ich denke, alle Antworten weisen nicht wirklich auf das Problem hin, da alle in bestimmten Szenarien funktionieren. Wenn Sie jedoch alle Fälle abdecken müssen, befolgen Sie die folgenden Punkte:
Je nachdem, wo Sie den Lichtstil der Statusleiste benötigen, sollten Sie immer diese 3 Punkte berücksichtigen:
1) Wenn Sie die Statusleiste auf dem Startbildschirm oder an anderen Stellen benötigen, an denen Sie sie nicht steuern können (nicht in Ansichtssteuerungen, sondern in einigen systemgesteuerten Elementen / Momenten wie dem Startbildschirm), gehen Sie zu Ihren Projekteinstellungen
2) Wenn Sie einen Controller in einem Navigationscontroller haben, können Sie ihn im Interface Builder wie folgt ändern:
a) Wählen Sie die Navigationsleiste Ihres Navigationscontrollers
b) Stellen Sie dann den Stil der Navigationsleiste auf "Schwarz" ein, da dies bedeutet, dass sich unter Ihrer Statusleiste ein "Schwarz" -> dunkler Hintergrund befindet, sodass die Statusleiste auf Weiß gesetzt wird
Oder machen Sie es im Code wie folgt
3) Wenn Sie nur den Controller haben, der einen eigenen Statusleistenstil haben muss und nicht als UINavigationController in eine Containerstruktur eingebettet ist
Legen Sie den Statusleistenstil im Code für den Controller fest:
quelle
Einfach anrufen
in dem
Methode meiner
AppDelegate
funktioniert gut für mich in iOS7.quelle
View controller-based status bar appearance = NO
Dies ist im iOS 7 UI Transition Guide dokumentiert , auf das Sie eine Apple-Entwickler-ID benötigen, um direkt darauf zugreifen zu können. Der relevante Auszug:
Möglicherweise auch von Interesse:
Ich würde auf jeden Fall empfehlen, das Dokument durchzusehen, auf das Sie wiederum mit Ihrer Apple-Entwickler-ID zugreifen können.
quelle
Hier finden Sie Apple-Richtlinien / Anweisungen zum Ändern der Statusleiste. In der Statusleiste sind nur Dunkel und Hell (während und Schwarz) zulässig.
Hier ist - So ändern Sie den Stil der Statusleiste:
Wenn Sie Set - Statusleiste Stil wollen, Anwendungsebene dann eingestellt ,
UIViewControllerBasedStatusBarAppearance
umNO
in Ihrer `.plist‘ Datei.Wenn Sie den Statusleistenstil auf View Controller-Ebene festlegen möchten, gehen Sie folgendermaßen vor:
UIViewControllerBasedStatusBarAppearance
inYES
in der.plist
Datei, wenn Sie den Statusleistenstil nur auf UIViewController-Ebene festlegen müssen.In der viewDidLoad Add-Funktion -
setNeedsStatusBarAppearanceUpdate
Überschreiben Sie den bevorzugten StatusBarStyle in Ihrem Ansichts-Controller.
- -
Stellen Sie den Wert von .plist entsprechend der Setup-Ebene des Statusleistenstils ein.
Hier ist ein hackiger Trick zum Ändern / Festlegen der Hintergrundfarbe für die Statusleiste während des Anwendungsstarts oder während viewDidLoad Ihres View Controllers.
Hier ist das Ergebnis:
quelle
Ich habe einige Dinge anders gemacht und es funktioniert für mich.
Ohne Codeänderungen habe ich meine .plist-Datei folgendermaßen konfiguriert:
Ich hoffe, es hilft.
bearbeiten
Für jeden Ansichts-Controller ändere ich die Eigenschaft "Simulierte Metriken" der "Statusleiste" im Storyboard von "abgeleitet" in "Lichtinhalt".
quelle
Wenn Sie mit Swift dasselbe Ergebnis erzielen möchten, können Sie diesen Code in Ihrer AppDelegate.swift-Datei verwenden:
Und der Text Ihrer Statusleiste wird weiß sein :-)!
quelle
Wenn Sie
View controller-based status bar appearance
in info.plist weiterhin die Einstellung YES verwenden möchten, dh die Statusleiste für jeden View-Controller ändern können, verwenden Sie für weißen Text in der Statusleiste in ViewDidLoad Folgendes:quelle
Fügen Sie in Plist Folgendes hinzu:
UIStatusBarStyleLightContent
NO
quelle
Stellen Sie in info.plist den Feldwert NO ein. Zeigen Sie das Aussehen der Controller-basierten Statusleiste an und setzen Sie die Statusanzeige unter Ziel> allgemeine Einstellung.
quelle
Lassen Sie mich Ihre Frage vollständig beantworten. Das Ändern der Textfarbe in der Statusleiste ist sehr einfach, in iOS 7 jedoch etwas verwirrend, insbesondere für Neulinge.
Wenn Sie versuchen, die Farbe im Storyboard von Schwarz auf Weiß zu ändern, indem Sie den Ansichts-Controller auswählen und auf der rechten Seite zu Simulierte Metriken wechseln, funktioniert dies nicht und ich weiß nicht warum. Es sollte funktionieren, indem man sich so ändert, aber wie auch immer.
Zweitens finden Sie die UIViewControllerBasedStatusBarAppearance-Eigenschaft nicht in Ihrer Liste, aber standardmäßig ist sie nicht vorhanden. Sie müssen es selbst hinzufügen, indem Sie auf die Schaltfläche + klicken und es dann auf NEIN setzen.
ios 7 Statusleiste Textfarbe
Zuletzt müssen Sie zu Ihrer AppDelegate.m-Datei gehen und Folgendes in die didFinishLaunchingWithOptions-Methode einfügen. Fügen Sie die folgende Zeile hinzu:
Dadurch wird die Farbe für alle Ihre View Controller in Weiß geändert. Hoffe das hilft!
quelle