Frage iOS 7 und höher: Legen Sie den Statusleistenstil pro Ansichtscontroller fest



Ich habe viele Möglichkeiten ausprobiert, um den Statusleistenstil (Standard oder Lightcontent) zu setzen, aber es kann nicht auf einer Basis pro View-Controller funktionieren. Ich kann den Statusleistenstil nur für die gesamte App festlegen.

Hat jemand einen Hinweis?

Ich habe es versucht UIViewControllerBasedStatusBarAppearance 

und

-(UIStatusBarStyle)preferredStatusBarStyle{ 
    return UIStatusBarStyleLightContent; 
}

aber diese Methoden funktionieren nicht.


74
2017-09-25 19:50


Ursprung


Antworten:


Hast du das versucht?

  1. Setzen Sie "Controller-basierte Statusleiste anzeigen" (UIViewControllerBasedStatusBarAppearance) zu YES in Ihrer Info.plist. (YES ist der Standardwert, also können Sie diesen Wert auch einfach aus Ihrem Plist herauslassen.)

  2. Rufen Sie in Ihrer viewDidLoad-Methode auf [self setNeedsStatusBarAppearanceUpdate].

  3. Implementieren preferredStatusBarStyleGeben Sie den Statusleistenstil zurück, den Sie für diesen Ansichtscontroller verwenden möchten.

    - (UIStatusBarStyle) preferredStatusBarStyle { 
        return UIStatusBarStyleLightContent; 
    }
    

134
2017-09-25 20:35



Es gibt einen Haken hier, wenn Ihr View-Controller innerhalb des eigenständigen UINavigationControllers und nicht Teil des Storyboard-basierten UINavigationControllers ist, dann scheitern alle Methoden. Ich bin über diese Situation gestolpert und dann, um die Statusleiste auf einen hellen Stil zu setzen, habe ich folgendes verwendet

[self.navigationController.navigationBar setBarStyle:UIBarStyleBlack];

Das hat perfekt für mich funktioniert.


70
2018-02-02 12:21



EDIT: Diese Lösung ist auf iOS 9 veraltet. Bitte wählen Sie eine der anderen Antworten.

Mit UIViewControllerBasedStatusBarAppearance Mit NEIN konnte ich den Stil auf weißen Text setzen:

[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleBlackTranslucent;

Dies liegt daran, dass die Textfarbe für diesen Stil auf iOS 6 und darunter weiß war.

AKTUALISIEREN: Laut @jowie kannst du das auf iOS8 ausprobieren:

[UIApplication sharedApplication].statusBarStyle = UIBarStyleBlack;

22
2017-11-12 19:59



In der viewDidLoad-Methode:

Ziel c

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
[self setNeedsStatusBarAppearanceUpdate];

Schnell

UIApplication.shared.statusBarStyle = .lightContent
self.setNeedsStatusBarAppearanceUpdate()

13
2018-03-02 12:36



In Swift konnte ich dies tun, indem ich schrieb:

let tbc : UITabBarController = self.window?.rootViewController as UITabBarController
var moreViewController : UINavigationController = tbc.moreNavigationController

moreViewController.navigationBar.barStyle = UIBarStyle.Black

Grundsätzlich interessiert dich die letzte Zeile.
Dies führte dazu, dass die Tableiste in Weiß geändert wurde:

enter image description here

Beachten Sie, dass ich nichts geändert habe Info.plist um dieses Ergebnis zu erreichen.
Für mehr Informationen bezüglich des Änderns Navigation Status BarBitte schauen Sie sich diesen Link an: http://www.appcoda.com/customi-navigation-status-bar-ios-7/


12
2018-03-01 12:27



Ich wette, Sie haben Ihren View Controller in einen Navigationscontroller integriert. Um zu verhindern, dass der Stil der Navigationsleiste geändert wird .Black Benutze diese Unterklasse:

class YourNavigationController: UINavigationController {
    override func childViewControllerForStatusBarStyle() -> UIViewController? {
        return topViewController
    }
}

6
2017-10-06 18:19



Schnell:

let tbc : UITabBarController = self.window?.rootViewController as UITabBarController
var moreViewController : UINavigationController = tbc.moreNavigationController
moreViewController.navigationBar.barStyle = UIBarStyle.Black

Ziel c:

anhängen an die controller.m Datei viewDidLoad Methode:

[self setNeedsStatusBarAppearanceUpdate].

dann implementieren Sie diese Methode in demselben controller.m Datei:

- (UIStatusBarStyle) preferredStatusBarStyle { 
    return UIStatusBarStyleLightContent; 
}

Offizielle Dokumente:

https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/TransitionGuide/Bars.html

Gesponserter Artikel:

http://www.ryadel.com/2015/03/04/xcode-set-status-bar-style-and-color-in-objective-c/


3
2018-03-04 02:31



Im ViewController, dass Sie die Farbe der Statusleiste ändern möchten

- (void) viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
}

- (void) viewWillDisappear:(BOOL)animated{
    [super viewWillDisappear:animated];
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
}

0
2017-09-25 06:24