web-dev-qa-db-fra.com

Comment changer la couleur de la barre d'état en utilisant ios avec Swift sur l'accessibilité Internet?

je souhaite modifier la couleur de la barre d'état de mon appareil si Internet est connecté. La couleur de la barre d'état doit alors virer au noir. Si Internet n'est pas connecté, la barre de couleur ou d'état doit virer au rouge pour indiquer si Internet fonctionne ou non pendant travailler avec l'application avec Swift ... aidez-moi

12
Fatti Khan

Dans votre Info.plist, vous devez définir "Afficher l'apparence de la barre d'état basée sur le contrôleur" sur une valeur booléenne.

Si vous le définissez sur YES, vous devez remplacer la fonction preferredStatusBarStyle dans chaque contrôleur de vue.

Si vous le définissez sur NO, vous pouvez définir le style dans AppDelegate en utilisant: 

UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: true)
36
Nikita Khandelwal
override func viewWillAppear(animated: Bool) {
    self.navigationController?.navigationBarHidden =  true

    //Status bar style and visibility
    UIApplication.sharedApplication().statusBarHidden = false
    UIApplication.sharedApplication().statusBarStyle = .LightContent

    //Change status bar color
    let statusBar: UIView = UIApplication.sharedApplication().valueForKey("statusBar") as! UIView
    if statusBar.respondsToSelector("setBackgroundColor:") {
        statusBar.backgroundColor = UIColor.redColor()
    }

}
28
A.G

Testé dans Swift et iOS9

Si vous utilisez Navigation Controllers, mettez ceci dans votre classe viewcontroller:

override func viewDidLoad(){
    ...
    self.navigationController?.navigationBar.barStyle = .Black
}

Sinon, remplacez la preferredStatusBarStyle() dans votre UIViewController: 

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

Vous pouvez trouver plus d'informations ici

5
Cody

Pour Swift 2.3

Essayez avec ces méthodes

// Get network status
class func hasConnectivity() -> Bool {
    let reachability: Reachability = Reachability.reachabilityForInternetConnection()
    let networkStatus: Int = reachability.currentReachabilityStatus().value
    return networkStatus != 0
}

// change status bar color
var navigationBarAppearace = UINavigationBar.appearance()
navigationBarAppearace.tintColor = UIColor.blueColor()
navigationBarAppearace.barTintColor = UIColor.blueColor()

L'attribut tintColor change la couleur de fond de la barre de navigation

barTintColor attribue à la couleur de la

Mais si vous voulez changer la couleur de la barre d'état à la runtime, je pense que la meilleure façon consiste à ajouter une vue derrière votre barre d'état.

3
thedjnivek

Pour Swift 3

Cela devrait fonctionner pour Xcode 8 et Swift 3

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}
2
Taichi Kato

// Dans votre AppDelegate.Swift dans didFinishLaunchingWithOptions: UINavigationBar.appearance (). BarTintColor = UIColor.greenColor ()

//Optionally, if you need a specific color, how you do it with RGB:
UINavigationBar.appearance().barTintColor = UIColor(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0)

                                or 

Dans votre Info.plist, vous devez définir "Afficher l'apparence de la barre d'état basée sur le contrôleur" sur une valeur booléenne.

 UIApplication.sharedApplication().statusBarStyle = .LightContent

Comme l'a commenté @rckoenes depuis iOS 7, la barre d'état est dessinée au-dessus de votre application. Ainsi, vous pouvez afficher une vue derrière la zone de la barre d’état (20 pixels du haut de la barre d’état) et contrôler sa couleur d’arrière-plan en fonction des changements de statut de la connexion Internet.

2
Yuvrajsinh

Pour avoir du texte blanc dans la barre d’état noire: Basculer Afficher l’apparence de la barre d’état basée sur le contrôleur àNOin Info.plist Dans AppDelegate.Swift, ajoutez let statusBar: UIView = UIApplication.shared.value(forKey: "statusBar") as! UIView statusBar.backgroundColor = UIColor.blackin

0
Anup G Prasad