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
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)
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()
}
}
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
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.
Pour Swift 3
Cela devrait fonctionner pour Xcode 8 et Swift 3
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
// 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.
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.black
in