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:)
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.
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;
}
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.
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 .
-
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 .
-
dans votre AppDelegate.Swift , ajouter 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). 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
- Open Info.plist
- 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 "
- ajouter une nouvelle propriété appelée "Status bar style" (String) et définir sa valeur à "Opaque black style"
fait.
Ajouter la ligne suivante dans AppDelegate
's didFinishLaunchingWithOptions:
méthode
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackOpaque animated:NO];
É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
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
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
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!
dans votre Storyboard sélectionnez votre contrôleur de vue root et définissez le type de barre d'état par défaut
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;
}
pour swift 4 et iOS 11
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
application.statusBarStyle = .lightContent
return true
}
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:
- 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. -
dans le viewDidLoad ajouter la fonction -
setNeedsStatusBarAppearanceUpdate
-
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.