webentwicklung-frage-antwort-db.com.de

UIApplication.sharedApplication (). SetStatusBarStyle () in iOS 9 veraltet

Ich habe verwendet

UIApplication.sharedApplication().setStatusBarStyle()

In meinem AppDelegate hat es gut funktioniert, aber seit iOS 9 ist diese Methode veraltet und ich kann keine Alternative finden.

Ich möchte den Statusleistenstil für meine gesamte Anwendung in .LightContent ändern, aber der einzige Vorschlag, den xCode gibt, ist, dies in jedem VC separat mit;

override func preferredStatusBarStyle() -> UIStatusBarStyle {
    return .LightContent
}

Hat jemand eine Idee, wie man das für die gesamte Anwendung macht?

Danke im Voraus

38
Rick

Ich denke, ich habe eine Lösung gefunden. Ich habe das eingestellt

View controller-based status bar appearance Boolesch zu NO

In meiner info.plist Datei.

Info.Plist

Dann ging ich zum General settings -> Deployment info Meines Ziels und änderte die Dropdown-Option Status Bar Style In Light anstelle von Default

Change Status Bar Style to Light

Dadurch wurde der Statusleistenstil für meine gesamte Anwendung in Light geändert, genau das, was ich wollte.

Ich hoffe das hilft!

69
Rick

In Swift 3 ist das so:

 UIApplication.shared.statusBarStyle = .lightContent
10
EgzonArifi

In Swift 3.

In Ihrem View Controller:

override var preferredStatusBarStyle: UIStatusBarStyle {
    return UIStatusBarStyle.lightContent
}

Wenn Sie möchten, dass beim Ausführen der App auf Ihrem Startbildschirm auch die Statusleiste in lightContent angezeigt wird, gehen Sie wie folgt vor:

enter image description here

8
Marlon Ruiz

Verwenden Sie diese Methode, um IStatusBarStyle auf Ansichtscontrollern dynamisch zu aktualisieren

dies entfernt auch veraltete Warnungen

'setStatusBarStyle:' ist veraltet: zuerst veraltet in iOS 9.0 - Verwenden Sie - [UIViewController preferredStatusBarStyle]

für den Anruf

[[UIApplication sharedApplication] setStatusBarStyle:style];

Fangen wir an

Ziel - C

define tilityFunction

+(void)setStatusBarStyle:(UIStatusBarStyle )style {    
    [[NSUserDefaults standardUserDefaults] setInteger:style forKey:@"UIStatusBarStyle"];
    [[NSUserDefaults standardUserDefaults] synchronize];
}

überschreiben Sie diese Methode in Ihrem BaseViewController

- (UIStatusBarStyle)preferredStatusBarStyle {
    UIStatusBarStyle style = [[NSUserDefaults standardUserDefaults] integerForKey:@"UIStatusBarStyle"];
    return style;
}

setzen Sie den UIStatusBarStyle-Wert für AnyViewController mit einer UtilityFunction wie folgt:

[UtilityFunctions setStatusBarStyle:UIStatusBarStyleDefault];

// call below code for preferred style
[self preferredStatusBarStyle];

Swift 4.

define tilityFunction

class func setPreferedStyle(style:UIStatusBarStyle)->Void {
    UserDefaults.standard.set(style, forKey: "UIStatusBarStyle")
    UserDefaults.standard.synchronize()
}

überschreiben Sie diese Methode in Ihrem BaseViewController

override var preferredStatusBarStyle: UIStatusBarStyle {
    if let style: UIStatusBarStyle = UIStatusBarStyle(rawValue:UserDefaults.standard.integer(forKey: "UIStatusBarStyle")) {
        return style
    }
    return UIStatusBarStyle.lightContent
}

setzen Sie den UIStatusBarStyle-Wert für AnyViewController mit einer UtilityFunction wie folgt:

Utility.setPreferedStyle(style: .lightContent)

// call below code for preferred style
preferredStatusBarStyle()
1
Muhammad Waqas

Das hat in Xcode 7 gut funktioniert.

In AppDelegate:

UIApplication.sharedApplication().statusBarStyle = .LightContent
1
Caleb Kleveter

für diejenigen, die noch mit Swift 3 in Xcode 8 arbeiten:

(etwas anders als Marlon Ruizs Antwort oben, keine Override-Funktion, sondern in viewDidLoad)

override func viewDidLoad() {
    super.viewDidLoad()

    var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }
}
1
aremvee