Ich versuche, die Farbe der Statusleiste in meiner Swift-App in Weiß zu ändern, stoße aber auf eine Mauer. Ich habe 3 ViewController, die jeweils in einen NavigationController eingebettet sind (könnte das das Problem sein? Ich habe bereits versucht, den Code in die NavigationController-Klasse einzufügen.) Ich habe beide folgenden Codeteile in didFinishLaunchingWithOptions meines AppDelegate ausprobiert .swift Datei, aber keine funktioniert.
application.statusBarStyle = .LightContent
und
UIApplication.sharedApplication().statusBarStyle = .LightContent
Alles, was die Docs dazu zu sagen haben, ist, dass UIBarButtonStyle ein Int ist und mir dieses Enum-Snippet gegeben hat, das mir bei der Implementierung überhaupt nicht geholfen hat.
enum UIStatusBarStyle : Int {
case Default
case LightContent
case BlackOpaque
}
Was vermisse ich?
quelle
in AppDelegate.swift didFinishLaunchingWithOptions
Info.plist
in AppDelegate.swift didFinishLaunchingWithOptions
Info.plist
quelle
Sie müssen Folgendes einstellen:
navigationController.navigationBar.barStyle = .black
und der Text wird in weiß angezeigt
quelle
override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent }
. Sie müssen nur diese Zeile schreiben,viewDidLoad
um gut zu arbeiten. Stellen Sie sicher, dass SieView controller-based status bar appearance = YES
diese Lösung einhalten .Geben Sie für iOS9.x und Xcode7 Folgendes ein
AppDelegate.swift
:Dadurch wird der Stil Ihrer Statusleiste
.Lightcontent
für alle Ansichts-Controller in einem UINavigationController automatisch geändert.(Löschen Sie auch
View controller-based status bar appearance
aus Info.plist, um die Warnungen zu unterdrücken, die Sie wahrscheinlich auch sehen!)quelle
In Swift 3 wurde der Statusleistenstil in eine berechnete Eigenschaft in UIViewController geändert, die Sie wie folgt überschreiben können:
quelle
Unter iOS 9 ist Folgendes (setStatusBarStyle) veraltet und Sie erhalten eine Warnung, wenn Sie diesen Weg gehen.
Wenn Sie möchten, dass alle Statusleisten in einem einzigen Schuss geändert werden, fügen Sie Ihrer Info.plist Folgendes hinzu. Dadurch wird auch die Statusleiste Ihres Startbildschirms weiß. Während der obige Code nicht wird.
quelle
Für mich funktioniert alles oben nicht, bis ich hinzufüge:
so:
UIViewControllerBasedStatusBarAppearance
aufYES
in.plist
viewDidLoad
Anrufself.setNeedsStatusBarAppearanceUpdate();
override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent }
navigationBar.barStyle
so endgültigefür hellen Inhalt:
override var preferredStatusBarStyle: UIStatusBarStyle { self.navigationController?.navigationBar.barStyle = .black;//or default return .lightContent //or default }
und für schwarzen Inhalt verwenden Sie Standard
Die Quelle von hier und hier .
und wenn dies nicht funktioniert, können Sie versuchen, Folgendes hinzuzufügen
UINavigationController
extension
:quelle
Seltsam, mit Swift 3.1 und XC8.2.1, aber all das hat nicht funktioniert.
Was ich getan habe, ist gerecht
Keine Plist, kein anderes Zeug. HTH
quelle
In Swift 3.0 können Sie einen Getter in ViewController für das View Controller-basierte Erscheinungsbild der Statusleiste überschreiben:
quelle
Bearbeiten Sie Ihre Info.plist nicht. Fügen Sie dies Ihrem ViewController.swift hinzu:
quelle
Schritt 1. Zur info.plist hinzufügen
View controller-based status bar appearance -> NO
Schritt 2. Fügen Sie Code in die Methode ein, in der Sie die Farbe der Statusleiste ändern müssen:
Schlüsselzeile des Codes:
setNeedsStatusBarAppearanceUpdate()
quelle