iOS
Farbe der Statusleiste ändern
Suche…
Für Nicht-UINavigationBar-Statusleisten
- Setzen Sie unter info.plist die Darstellung der
View controller-based status bar appearance
aufYES
- In View-Controllern, die nicht in
UINavigationController
enthaltenUINavigationController
implementieren Sie diese Methode.
In Ziel-C:
- (UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}
In Swift:
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent
}
Für UINavigationBar-Statusleisten
Unterklasse UINavigationController und überschreiben Sie dann diese Methoden:
In Ziel-C:
- (UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}
In Swift:
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return .lightContent
}
Alternativ können Sie barStyle
in der UINavigationBar
Instanz UINavigationBar
:
Ziel c:
// e.g. in your view controller's viewDidLoad method:
self.navigationController.navigationBar.barStyle = UIBarStyleBlack; // this will give you a white status bar
Schnell
// e.g. in your view controller's viewDidLoad method:
navigationController?.navigationBar.barStyle = .black // this will give you a white status bar
UIBarStyle
Optionen sind default
, black
, blackOpaque
, blackTranslucent
. Die letzten drei sollten Ihnen eine Statusleiste mit weißem Text geben, nur die letzten beiden geben die Deckkraft der Leiste an.
Hinweis: Sie können das Erscheinungsbild Ihrer Navigationsleiste weiterhin beliebig ändern.
Wenn Sie den Code von ViewController nicht ändern können
Wenn Sie eine Bibliothek verwenden, die AwesomeViewController mit einer falschen Statusleistenfarbe enthält, können Sie Folgendes versuchen:
let awesomeViewController = AwesomeViewController()
awesomeViewController.navigationBar.barStyle = .blackTranslucent // or other style
Zur ViewController-Eindämmung
Wenn Sie UIViewControllerContainment
gibt es ein paar andere Methoden, die es wert sind, betrachtet zu werden.
Wenn Sie möchten, dass ein untergeordneter viewController die Darstellung der Statusleiste steuert (dh, ob das untergeordnete Element oben auf dem Bildschirm angezeigt wird)
in Swift
class RootViewController: UIViewController {
private let messageBarViewController = MessageBarViewController()
override func childViewControllerForStatusBarStyle() -> UIViewController? {
return messageBarViewController
}
override func viewDidLoad() {
super.viewDidLoad()
//add child vc code here...
setNeedsStatusBarAppearanceUpdate()
}
}
class MessageBarViewController: UIViewController {
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return .Default
}
}
Statusleistenstil für die gesamte Anwendung ändern
SCHNELL:
Schritt 1:
Fügen Sie in Ihrer Info.plist das folgende Attribut hinzu:
View controller-based status bar appearance
und seinen Wert auf
NO
wie im Bild unten beschrieben:
Schritt 2:
Fügen Sie in Ihrer AppDelegate.swift- Datei in der Methode didFinishLaunchingWithOptions
diesen Code hinzu:
UIApplication.shared.statusBarStyle = .lightContent
oder
UIApplication.shared.statusBarStyle = .default
Die .lightContent- Option setzt die Farbe der Statusleiste für die gesamte App auf Weiß.
Die Option .default setzt die Farbe der Statusleiste für die gesamte App auf die ursprüngliche schwarze Farbe.
ZIEL C:
Folgen Sie dem ersten Schritt aus dem SWIFT- Bereich. Fügen Sie diesen Code dann der AppDelegate.m- Datei hinzu:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
oder
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];