Barre d'état montrant le texte noir, seulement sur iPhone 6 ios 8 simulateur

j'essaie de convertir mon application iOS 7 en iOS 8 en Xcode 6 GM, et quand je l'exécute sur l'iPhone 5s ou des simulateurs inférieurs avec iOS 8 tout va bien, mais sur l'iPhone 6 et 6 Plus simulateurs, la barre D'État a le texte noir au lieu de blanc comme il est partout ailleurs. J'ai mis l'Info.plist UIStatusBarStyle "Noir Transparent Style (alpha de 0.5)" à Xcode, et qui semble avoir l'effet désiré partout ailleurs. Toutes les idées de ce qui se passe?

(Je n'ai encore touché à aucun des story-boards, est-ce que ça pourrait être quelque chose avec ça? J'espérais que je pourrais mettre ça de côté pour un certain temps:)

45
demandé sur Krunal 2014-09-16 16:47:01

14 réponses

ce bug ne se produit que si votre application est mise à l'échelle pour s'adapter à la résolution des nouveaux appareils.

une solution rapide (qui sait si cela sera même abordé dans 8.1) est de fournir les images de chargement de la bonne résolution dans votre paquet app.

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 supportons que portrait, donc fournir le 750x1334 et 1242x2208 fixé.

et juste pour confirmer au cas où ce n'était pas évident, vous devez utiliser UIStatusBarStyleLightContent pour votre style de barre de statut.

42
répondu Aaron Wasserman 2017-06-29 15:07:36

alors voici comment je l'ai réparé

In PLIST Voir la barre D'État basée sur le contrôleur Status Bar Style UIStatusBarStyleLightContent

In AppDelegate DidFinishLaunching

[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
    [self.window setBackgroundColor:[UIColor whiteColor]];

Dans Chaque Contrôleur De Vue

- (UIStatusBarStyle) preferredStatusBarStyle {
    return UIStatusBarStyleLightContent;
}
50
répondu Taylor Pierce 2014-09-22 18:03:18

la barre d'état de mon application fonctionnait bien dans iOS 7 en utilisant seulement les paramètres projet/cible:

Status bar style = UIStatusBarStyleLightContent

et

View controller-based status bar appearance = NO

mais dans iOS 8 (iPhone 6 et iPhone 6 Plus simulateurs) la barre d'état n'était pas présent. Changer l'apparence de la barre d'état basée sur le contrôleur de vue en YES et ajouter ensuite:

    // Objective C
    - (UIStatusBarStyle) preferredStatusBarStyle {
         return UIStatusBarStyleLightContent;
    }
    //Swift
    override func preferredStatusBarStyle() -> UIStatusBarStyle {
    return UIStatusBarStyle.LightContent
    }

au ViewController a permis de voir à nouveau la barre d'état blanche, mais seulement après la racine initiale lancement du contrôleur. Pendant le lancement de la barre d'état reste noir.

16
répondu Tony Adams 2015-09-15 13:13:16

une réponse similaire (actuellement voté comme 2ème) a déjà posté, acheter dans l'intérêt de garder ce poste à jour, voici la version Swift .

  1. ajoutez une ligne à vos informations.le fichier voit l'apparence de la barre d'état basée sur le contrôleur et fixe sa valeur booléenne à Non .

  2. dans votre AppDelegate.Swift , ajouter 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). Si non, essayez d'ajouter la méthode suivante à chacun de vos ViewControllers :

    override func preferredStatusBarStyle() -> UIStatusBarStyle { return UIStatusBarStyle.LightContent }

j'espère que cela a été utile,

Loic

15
répondu Loic Verrall 2014-12-18 10:36:29
  1. Open Info.plist
  2. ajouter une nouvelle propriété appelée "afficher l'apparence de la barre d'état basée sur le contrôleur "(booléen) et définir sa valeur à" non "
  3. ajouter une nouvelle propriété appelée "Status bar style" (String) et définir sa valeur à "Opaque black style"

fait.

7
répondu José 2015-08-10 12:51:46

Ajouter la ligne suivante dans AppDelegate 's didFinishLaunchingWithOptions: méthode

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackOpaque animated:NO];
6
répondu Teja Kumar Bethina 2014-11-18 10:23:03

Étape 1: Ouvrez l'info.Plust fichier de votre application et de mettre L'UIViewControllerBasedStatusBarAppearance à no

Étape 2: info.fichier de liste de votre application et définir le "style de la barre de statut" à UIStatusBarStyleLightContent

6
répondu Kakashi 2015-05-18 15:01:49

Pourrait être un problème avec le simulateur. Utilisez ceci pour outrepasser la barre d'état par défaut ou la barre d'État pour un contrôleur de vue spécifique.

override func preferredStatusBarStyle() -> UIStatusBarStyle {
    return UIStatusBarStyle.LightContent
} //This is swift code
3
répondu Saqib Omer 2014-09-16 13:05:49

je sais que c'est un mauvais style de modifier un comportement dans une classe de base en utilisant une catégorie, mais cela fonctionne et peut être la solution la plus rapide pour le corriger.

Étape #1: Assurez-vous que UIViewControllerBasedStatusBarAppearance ou View controller-based status bar appearance est défini à YES dans votre dossier de demande.

Étape #2: Ajouter le code suivant à votre projet:

@implementation UIViewController (StatusBarColorFix)

- (UIStatusBarStyle) preferredStatusBarStyle {
    return UIStatusBarStyleLightContent;
}

@end
2
répondu Sandy Chapman 2014-10-06 13:59:35

une bonne solution pour cela est d'utiliser le nouveau support nib image de lancement qui est utilisé sur les modèles iPhone 6. Il semble qu'il y ait juste un bug dans iOS 8 qui signifie que les modèles iPhone 6 ne vérifient pas le style de la barre d'état correctement lors du lancement, mais il est résolu si vous ajoutez dans le lancement nib.

comme Aaron Wasserman l'a souligné, vous pouvez également spécifier iPhone 6 & 6 + Lancez PNGs et cela semble résoudre le problème aussi, tant que vous les mettre en place correctement!

1
répondu CMash 2014-10-10 13:31:15

dans votre Storyboard sélectionnez votre contrôleur de vue root et définissez le type de barre d'état par défaut

0
répondu Shafraz Buhary 2014-12-16 04:36:53

j'ai effectué les étapes suivantes et ils ont très bien travaillé pour moi, devraient travailler dans iOS 8+ aussi.

1) Ajout de la propriété affichage de la barre d'état basée sur le contrôleur = > Non dans Info.plist.

2) Ajouter le code suivant dans - (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 surpassement dans ViewController

- (UIStatusBarStyle) preferredStatusBarStyle {
    return UIStatusBarStyleLightContent;
}
0
répondu Aamir 2017-02-27 06:44:37

pour swift 4 et iOS 11

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    application.statusBarStyle = .lightContent
    return true
}
0
répondu eladHayun 2017-10-27 11:15:34

Ici est Apple Directives/Instructions à propos de la barre d'état/changement de couleur du texte.

Voici - Comment changer la barre d'état style:

si vous voulez définir le style de barre de statut, le niveau d'application puis UIViewControllerBasedStatusBarAppearance à NO dans votre".plist".

, Ou par programmation, vous pouvez le faire à partir de l'App Délégué:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    application.statusBarStyle = .lightContent
    return true
}

si vous voulez mettre le style de la barre d'état, au niveau du contrôleur de vue alors suivre ces étapes:

  1. définissez UIViewControllerBasedStatusBarAppearance à YES dans le fichier .plist , si vous avez besoin de définir le style de barre d'état au niveau UIViewController seulement.
  2. dans le viewDidLoad ajouter la fonction - setNeedsStatusBarAppearanceUpdate

  3. override preferredStatusBarStyle dans votre contrôleur de vue.

-

override func viewDidLoad() {
    super.viewDidLoad()
    self.setNeedsStatusBarAppearanceUpdate()
}

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

valeur fixée de .plist selon le niveau de configuration de la barre d'état. enter image description here

0
répondu Krunal 2017-10-27 11:32:43