J'essaie de changer le style de ma barre d'état en .Light
mais le code précédent que j’avais implémenté dans Swift 1.2 ne semble plus fonctionner. voici le code:
override func viewDidLoad() {
super.viewDidLoad()
UIApplication.sharedApplication().statusBarStyle = .LightContent
}
maintenant j'ai mon View controller-based status bar appearance
Le réglage de info.plist sur YES et la lecture du document UIKit annulent toute modification de statusBarStyle et le conservent par défaut. Cependant, lorsque je modifie le paramètre sur 'NO' et modifie le statusBarStyle, je reçois ce <Error>: CGContextSaveGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable
dans mon débogueur .. Alors, s'agit-il d'un bogue dans Xcode? car pour changer le style de la barre d'état, vous devez changer le paramètre info.plist en NON, mais quand cela se produit .. erreur
J'ai toujours fait comme ça.
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
//Changing Status Bar
override func preferredStatusBarStyle() -> UIStatusBarStyle {
//LightContent
return UIStatusBarStyle.LightContent
//Default
//return UIStatusBarStyle.Default
}
}
Cela fonctionne dans n’importe quelle version Swift 2.x. Cela nécessite que vous définissiez View controller-based status bar appearance
dans votre Info.plist
fichier dans YES
.
Vous pouvez toujours utiliser preferredStatusBarStyle
dans votre contrôleur de vue:
étape 1: dans l'info.plist, définissez ViewControllerBasedStatusBarAppearance sur YES. étape 2: ajoutez ce code au ViewController que vous souhaitez éditer:
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent
}
*** Astuce: Il semble que cela ne fonctionne qu'en dehors des fonctions ViewDidLoad (), didReceiveMemoryWarning ().
Swift 3 ajoute simplement View controller-based status bar appearance
avec la valeur NO
à info.plist
et ajoutez ensuite à ViewController
où vous voulez:
UIApplication.shared.statusBarStyle = UIStatusBarStyle.lightContent
La modification des informations de déploiement fonctionne mais malgré - vous devez ajouter la clé 'Afficher l'apparence de la barre d'état basée sur le contrôleur' pour que le fichier plist le définisse sur NO.
Vous pouvez aussi simplement ajouter ceci dans AppDelegate. Cette option est préférable si vous souhaitez la modifier pour chaque ViewController de l'application et ne pas avoir à la différencier pour chaque autre VC.
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
application.statusBarStyle = UIStatusBarStyle.LightContent
// instead of
// UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: false)
// which gives warning about deprecation in iOS 9
return true
}
Ici essayez ceci cela pourrait vous aider
Commencez par aller au fichier info.plist et ajoutez cette "Vue de la barre d'état basée sur le contrôleur" en tant que clé et définissez la valeur sur NO.
ci-dessous montré dans l'image
après cela, entrez dans le fichier AppDelegate.Swift et passez cette ligne de code UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent
dans
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool{
UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent
return true
}
comme ça
Vous pouvez choisir "léger" dans les informations de déploiement, mais vous devez également ajouter "Afficher l'apparence de la barre d'état basée sur le contrôleur" et le définir sur NO.
Pour Swift 3 remplacer la variable preferredStatusBarStyle, utilisez ceci:
override var preferredStatusBarStyle: UIStatusBarStyle{
return .lightContent
}
On dirait que c'est un bug dans Xcode 7.0. Je reçois aussi le Error>: CGContextSaveGState: invalid context 0x0.
_ erreur lors du réglage de View controller-based status bar appearance
Pour l'instant, je remplace simplement la couleur de la barre d'état dans chaque contrôleur de vue.
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return .LightContent
}
Les réponses existantes sont excellentes, mais c'est un peu différent maintenant avec les nouvelles mises à jour!
override var
maintenant au lieu de override func
pour tous ceux qui sont confus - le Gist est toujours le même et vous devez toujours changer votre 'Info.plist':
override var preferredStatusBarStyle: UIStatusBarStyle
{
//LightContent
return UIStatusBarStyle.lightContent
//Default
//return UIStatusBarStyle.default
}
Si vous souhaitez le modifier de temps à autre dans votre application, vous pouvez utiliser les remplacements preferredStatusBarStyle()
mentionnés précédemment.
Assurez-vous simplement que vous appelez également setNeedsStatusBarAppearanceUpdate()
après avoir appelé preferredStatusBarStyle()
, pour en informer IOS).