Suche…


Für Nicht-UINavigationBar-Statusleisten

  1. Setzen Sie unter info.plist die Darstellung der View controller-based status bar appearance auf YES
  2. In View-Controllern, die nicht in UINavigationController enthalten UINavigationController 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:

Geben Sie hier die Bildbeschreibung ein

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];


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow