J'essaie de convertir mon application iOS 7 en iOS 8 dans Xcode 6 GM, et quand je l'exécute sur les simulateurs iPhone 5s ou inférieurs avec iOS 8, tout va bien, mais sur les simulateurs iPhone 6 et 6 Plus, la barre d'état a un text noir au lieu de blanc comme partout ailleurs. J'ai mis le InfoISplist UIStatusBarStyle à "Transparent Black Style (alpha de 0.5)" à travers Xcode, et cela semble avoir l'effet désiré partout ailleurs. Une idée de ce qui se passe?
(Je n'ai encore touché à aucun storyboard, est-ce que ça pourrait être quelque chose avec ça? J'espérais pouvoir l'éteindre pendant un moment 🙂
Ce bogue se produit uniquement si votre application est mise à l'échelle pour s'adapter à la résolution des périphériques les plus récents.
Une solution rapide (qui sait si cela sera même abordé dans 8.1) est de fournir la bonne résolution de chargement des images dans votre package d'application.
De https://developer.apple.com/ios/human-interface-guidelines/graphics/launch-screen/
For iPhone 7, iPhone 6s, iPhone 6: 750 x 1334 (@2x) for portrait 1334 x 750 (@2x) for landscape For iPhone 7 Plus, iPhone 6s Plus, iPhone 6 Plus: 1242 x 2208 (@3x) for portrait 2208 x 1242 (@3x) for landscape
Dans mon application, nous ne prenons en charge que le portrait, donc en fournissant le 750×1334 et 1242×2208 le fixe.
Et juste pour confirmer au cas où ce n'était pas évident, vous devez utiliser UIStatusBarStyleLightContent pour votre style de barre d'état.
Alors voici comment je l'ai réparé
En PLIST View Barre d'état basée sur le controller NO Style de barre d'état UIStatusBarStyleLightContent
Dans AppDelegate DidFinishLaunching
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent; [self.window setBackgroundColor:[UIColor whiteColor]];
Dans chaque controller de vue
- (UIStatusBarStyle) preferredStatusBarStyle { return UIStatusBarStyleLightContent; }
La barre d'état de mon application fonctionnait correctement dans iOS 7 en utilisant uniquement les parameters projet / cible:
Status bar style = UIStatusBarStyleLightContent
et
View controller-based status bar appearance = NO
mais dans iOS 8 (simulateurs iPhone 6 et iPhone 6 Plus), la barre d'état ne s'affichait pas. Modification de l'apparence de la barre d'état basée sur le controller sur YES, puis ajout de:
// Objective C - (UIStatusBarStyle) preferredStatusBarStyle { return UIStatusBarStyleLightContent; } //Swift override func preferredStatusBarStyle() -> UIStatusBarStyle { return UIStatusBarStyle.LightContent }
au ViewController a entraîné la visualisation de la barre d'état blanche, mais seulement après le lancement du controller racine initial. Lors du lancement initial, la barre d'état rest noire.
Une réponse similaire (actuellement votée en tant que 2ème) a déjà posté, acheter dans l'intérêt de garder ce post à jour, voici la version Swift .
Ajoutez une ligne à votre file info.plist appelé Afficher l'apparence de la barre d'état basée sur le controller et définissez sa valeur booleanne sur NO .
Dans votre file AppDelegate.swift , ajoutez la méthode suivante: func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool { UIApplication.sharedApplication().statusBarStyle = .LightContent return true }
Je n'avais pas besoin de faire cette étape pour que cela fonctionne (c.-à-d. Faire les étapes 1 et 2 et cela pourrait fonctionner). Sinon, essayez d'append la méthode suivante à chacun de vos ViewControllers :
override func preferredStatusBarStyle() -> UIStatusBarStyle { return UIStatusBarStyle.LightContent }
J'espère que cela a été utile,
Loic
Terminé.
Ajoutez la ligne suivante dans la AppDelegate
de didFinishLaunchingWithOptions:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackOpaque animated:NO];
Étape 1: ouvrez le file info.plist de votre application et définissez UIViewControllerBasedStatusBarAppearance sur NO
Étape 2: file info.plist de votre application et définissez le "Style de la barre d'état" sur UIStatusBarStyleLightContent
Pourrait être un problème avec le simulateur. Utilisez-le pour replace la barre d'état ou la barre d'état par défaut pour un controller de vue spécifique.
override func preferredStatusBarStyle() -> UIStatusBarStyle { return UIStatusBarStyle.LightContent } //This is swift code
Je sais que c'est un mauvais style de replace le comportement dans une class de base en utilisant une catégorie, mais cela fonctionne et peut-être la solution la plus rapide pour le réparer.
Étape 1: Assurez View controller-based status bar appearance
UIViewControllerBasedStatusBarAppearance
ou View controller-based status bar appearance
est définie sur YES
dans le file plist de votre application.
Étape 2: Ajoutez le code suivant à votre projet:
@implementation UIViewController (StatusBarColorFix) - (UIStatusBarStyle) preferredStatusBarStyle { return UIStatusBarStyleLightContent; } @end
Une bonne solution pour cela est d'utiliser le nouveau support d'image de lancement qui est utilisé sur les templates iPhone 6. Il semble qu'il y ait juste un bogue dans iOS 8 qui signifie que les templates de l'iPhone 6 ne vérifient pas correctement le style de la barre d'état lors du lancement, mais il est résolu si vous ajoutez la pointe de lancement.
Comme Aaron Wasserman a souligné que vous pouvez également spécifier iPhone 6 & 6+ PNG de lancement et cela semble résoudre le problème aussi, tant que vous les configurez bien!
Dans votre Storyboard, select votre controller de vue racine et définissez le type de barre d'état par défaut
J'ai effectué les étapes suivantes et ils ont travaillé pour moi très bien, devrait travailler dans iOS 8+ ainsi.
1) Propriété ajoutée Afficher l'apparence de la barre d'état basée sur le controller => NO dans Info.plist.
2) Ajouter le morceau de code suivant dans l'application - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
de AppDelegate.m
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent; [self.window setBackgroundColor:[UIColor redColor]]; // Change color as per need.
3) Méthode de rlocation dans ViewController
- (UIStatusBarStyle) preferredStatusBarStyle { return UIStatusBarStyleLightContent; }
Pour swift 4 et iOS 11
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { application.statusBarStyle = .lightContent return true }
Voici les directives / instructions d'Apple sur la barre d'état / changement de couleur du text.
Voici comment – Comment changer le style de la barre d'état:
Si vous souhaitez définir le style de la barre d'état, niveau de l'application, définissez UIViewControllerBasedStatusBarAppearance
sur NO
dans votre file `.plist '.
Ou vous pouvez effectuer une programmation par App Delegate:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { application.statusBarStyle = .lightContent return true }
Si vous souhaitez définir le style de la barre d'état, au niveau du controller de vue, procédez comme suit:
UIViewControllerBasedStatusBarAppearance
sur YES
dans le file .plist
, si vous devez définir le style de la barre d'état uniquement au niveau UIViewController. Dans la fonction d' setNeedsStatusBarAppearanceUpdate
– setNeedsStatusBarAppearanceUpdate
override preferredStatusBarStyle dans votre controller de vue.
–
override func viewDidLoad() { super.viewDidLoad() self.setNeedsStatusBarAppearanceUpdate() } override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent }
Définissez la valeur de .plist en fonction du niveau de configuration du style de la barre d'état.