Changement d'État de la Barre de Couleur d'arrière-plan dans Swift 3
Dans XCode 7.3.x mauvais changé la Couleur de fond de ma Barre de statut avec:
func setStatusBarBackgroundColor(color: UIColor) {
guard let statusBar = UIApplication.sharedApplication().valueForKey("statusBarWindow")?.valueForKey("statusBar") as? UIView else {
return
}
statusBar.backgroundColor = color
}
Mais il semble que cela ne fonctionne plus avec Swift 3.0.
Mauvais essayé avec:
func setStatusBarBackgroundColor(color: UIColor) {
guard let statusBar = (UIApplication.shared.value(forKey: "statusBarWindow") as AnyObject).value(forKey: "statusBar") as? UIView else {
return
}
statusBar.backgroundColor = color
}
Mais il me donne:
this class is not key value coding-compliant for the key statusBar.
Toutes les Idées de comment le changer avec XCode8/Swift 3.0?
InformationsquelleAutor derdida | 2016-10-01
Vous devez vous connecter pour publier un commentaire.
UIView
est privé. Je suis curieux de voir si votre application est approuvée à l'aide de ce.value(forKey key: String)
est ouvert, donc je suis en supposant que son ok pour l'utiliser. Pouvez-vous expliquer. Si c'est une mauvaise pratique, comment voulez-vous changer la couleur de fond ou la barre d'état. Cette methd a fonctionné pour moi. J'ai essayé d'ajouter une sous-vue de lawindow
objet dans leAppDelegate
et cela ne fonctionne pas.value(forKey key: String)
la méthode que vous utilisez le KVC de objc d'exécution pour accéder à une vue que vous ne devriez pas avoir accès à (et n'a pas de documentation s'y référant BTW) au cours de l'exécution seulement. Cette construction est utilisée sous iOS 10, mais pas sous iOS 9 par exemple (où vous devez accéder à lastatusBarWindow
premier), et vous avez absolument aucune idée de ce qu'il persiste sous iOS 11. Construction interne et pas de docs signifie que Apple n'a pas de contrat à respecter ici."Changement de statut" du fond de la barre de couleur:
Changement de statut de texte de la barre de couleur:
Mise à jour: veuillez noter que la barre de statut cadre change lorsque l'affichage est mis en rotation. Vous pourriez mettre à jour la créé sous-vue image par:
statusBarView.autoresizingMask = [.flexibleWidth, .flexibleTopMargin]
NSNotification.Name.UIApplicationWillChangeStatusBarOrientation
viewWillLayoutSubviews()
Avec l'aide de Swift 3 et 4 vous pouvez utiliser l'extrait de code ci-dessous. Il trouve le point de vue de
UIApplication
à l'aide devalueForKeyPath
comme ensemble de couleur d'arrière-plan.Objective-C
Pour Xcode 9 et iOS 11:
Le style de la barre d'état, nous allons essayer de réaliser est une barre d'état avec le blanc de contenu. Aller à la ViewController.swift fichier et ajouter les lignes de code suivantes.
Ou de projet option paramètres vous pouvez modifier la barre d'état style:
Ensuite, retournez à la table de montage, Sélectionnez l'View Controller et dans le menu de l'Éditeur Sélectionnez Intégrer dans la Navigation Controller. Sélectionnez la Barre de Navigation et dans l'Attribut de l'Inspecteur de la Barre Teinte de couleur rouge. Le Storyboard ressemblera à ceci.
Construire et Exécuter le projet, Le contenu de la barre d'état est sombre à nouveau, ce qui est la valeur par défaut. La raison pour cela est, iOS demandé pour le style de la barre d'état de la manette de navigation au lieu de la vue-contrôleur.
De changer le style de tous les manette de navigation à l'intérieur de l'application, de modifier la méthode suivante dans la AppDelegate.swift fichier.
Construire et Exécuter le Projet de nouveau, cette fois le contenu de la barre d'état modifié de blanc.
Pour iOS 11 et Xcode 9 utilisez les étapes suivantes.
créer une extension à UIApplication classe:
extension UIApplication {
var statusBarView: UIView? {
return value(forKey: "statusBar") as? UIView
}
}
Dans votre classe ou de l'endroit où vous souhaitez modifier la barre d'État la couleur d'arrière-plan:
UIApplication.shared.statusBarView?.backgroundColor = .red
Pour la lumière de contenu ou sombre contenu de la barre d'état il suffit d'aller à Info.plist et ajoutez la ligne de valeur avec la valeur PAS.
Essayer cette
Goto votre application info.plist
Then Goto votre délégué d'application et collez le code suivant où vous définissez votre Windows est RootViewController.
Cela fonctionne pour moi, comme ma navigation barTintColor était noir et incapable de voir la barre d'état.
Quand jeu de code ci-dessus, il didFinishLaunch barre d'état s'affiche en blanc.
Vous pouvez définir la couleur de fond pour la barre d'état lors du lancement de l'application ou lors de viewDidLoad de votre vue-contrôleur.
Voici le résultat:
La solution possible est l'ajout de vue qui sera utilisé comme arrière-plan de la barre d'état de votre viewController:
Ajouter le code suivant dans votre fichier d'extension pour modifier votre barre d'état dans swift 4 et ci-Dessus:
maintenant, nous pouvons modifier la barre de statut en ajoutant la ligne suivante dans notre ViewController classe:
Espère, ce sera utile.
Grâce