Barre d'état affichant du text en noir, seulement sur iPhone 6 iOS 8 simulateur

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 .

  1. 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 .

  2. 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 }

  3. 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

  1. Ouvrir Info.plist
  2. Ajoutez une nouvelle propriété appelée "Afficher l'apparence de la barre d'état basée sur le controller" (Boolean) et définissez sa valeur sur "NO"
  3. Ajouter une nouvelle propriété appelée "Style de barre d'état" (Chaîne) et définir sa valeur sur "Style noir opaque"

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:

  1. Définissez UIViewControllerBasedStatusBarAppearance sur YES dans le file .plist , si vous devez définir le style de la barre d'état uniquement au niveau UIViewController.
  2. Dans la fonction d' setNeedsStatusBarAppearanceUpdatesetNeedsStatusBarAppearanceUpdate

  3. 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. entrez la description de l'image ici