Je viens de mettre à niveau mon iPhone 5 iOS 7 vers la version quatre bêta. Désormais, lorsque je lance mon application depuis Xcode 5 sur cet iPhone, la barre d’état ne se cache pas, même s’il le devrait.
Ne fonctionne pas:
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];
Ne fonctionne pas:
[UIApplication sharedApplication].statusBarHidden = YES;
Impossible de se connecter à Apple Forums des développeurs
dans votre fichier de liste d'applications, ajoutez une ligne, appelez-la "Afficher l'apparence de la barre d'état basée sur le contrôleur" et définissez-la sur NON.
Notez que cela ne fonctionne tout simplement pas si vous utilisez UIImagePickerController dans l'application.
de http://www.openfl.org/developer/forums/general-discussion/iphone-5ios-7-cant-hide-status-bar/ , la solution de mgiroux
Ajouter une méthode dans votre contrôleur de vue.
- (BOOL)prefersStatusBarHidden {
return YES;
}
Dans la Pliste, ajoutez les propriétés suivantes.
-> Status bar is initially hidden
= OUI
-> View controller-based status bar appearance
= NO
Ajoutez les deux - la barre d'état va maintenant disparaître.
Pour masquer la barre d'état dans une vue unique, vous devez utiliser:
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
Au début, cela ne fonctionnait pas pour moi, puis une scie dans la documentation de cette méthode disait: // La définition de statusBarHidden ne fait rien si votre application utilise le système de barre d'état par défaut basé sur UIViewController.
Cela doit être fait sur le fichier plist, en ajoutant la clé View controller-based status bar appearance
réglée sur NO
. Et puis ça a marché.
Pour masquer la barre d'état dans iOS7, vous avez besoin de 2 lignes de code.
inapplication: (UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
write
[application setStatusBarHidden:YES];
dans info.plist ajouter ceci
View-Controller Based Status Bar Appearance = NO
Pour utiliser la méthode UIApplication héritée pour masquer/afficher la barre d'état, votre application doit définir une valeur de liste d'adresses pour iOS 7:
View-Controller Based Status Bar Appearance = NO
Cette valeur est définie sur OUI par défaut. Si vous le définissez sur NO, vous pouvez utiliser les méthodes héritées. Si vous laissez la valeur sur OUI, vous pouvez toujours masquer la barre d'état, mais il appartient à chaque sous-classe de contrôleur de vue de votre application de remplacer: prefersStatusBarHidden
pour renvoyer OUI.
Chaque fois que votre application a besoin que l'apparence ou la visibilité de la barre d'état change, et que l'apparence de la barre d'état basée sur View-Controller soit définie sur YES, votre contrôleur de vue le plus externe doit appeler:
setNeedsStatusBarAppearanceUpdateAnimation
De nombreuses combinaisons sont suggérées pour ce problème, mais le problème est que iOS 6 et 7 utilisent différentes méthodes pour masquer la barre d'état. Je n'ai jamais réussi à définir les paramètres de plist pour activer le comportement de style iOS6 sur iOS 7, mais si vous construisez votre application pour prendre en charge iOS 6+, vous devez utiliser 3 méthodes à la fois pour garantir qu'un contrôleur de vue particulier masque le statut. bar:
// for ios 7
- (BOOL)prefersStatusBarHidden{
return YES;
}
// for ios 6
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[[UIApplication sharedApplication] setStatusBarHidden:YES];
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
// explicitly set the bar to show or it will remain hidden for other view controllers
[[UIApplication sharedApplication] setStatusBarHidden:NO];
}
Cela devrait fonctionner quels que soient les paramètres de votre plist.
J'ai dû faire les deux modifications ci-dessous pour masquer la barre d'état:
Ajoutez ce code au contrôleur de vue où vous souhaitez masquer la barre d'état:
- (BOOL)prefersStatusBarHidden
{
return YES;
}
Ajoutez ceci à votre fichier .plist (allez à 'info' dans les paramètres de votre application)
View controller-based status bar appearance --- NO
Ensuite, vous pouvez appeler cette ligne pour masquer la barre d’état:
[[UIApplication sharedApplication] setStatusBarHidden:YES];
Ajoutez simplement ces 2 lignes dans le fichier info.plist. Cela corrigera le problème pour iOS7 et les versions antérieures.
Naviguez jusqu'au projet et sélectionnez Cibles -> Général et cochez la case "Style de la barre d'état ... Masquer lors du lancement de l'application". Cela fonctionnera.
Essayez cette méthode simple:
- (void)viewWillAppear:(BOOL)animated
{
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
}
- (void)viewWillDisappear:(BOOL)animated
{
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
}
La seule chose qui a fonctionné pour moi est d’ajouter ce qui suit dans votre plist
<key>UIStatusBarHidden</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
La méthode la plus simple que j'ai trouvée pour masquer la barre d'état dans l'ensemble de l'application consiste à créer un category
sur UIViewController
et à le remplacer par prefersStatusBarHidden
. De cette façon, vous n'avez pas à écrire cette méthode dans chaque contrôleur de vue.
#import <UIKit/UIKit.h>
@interface UIViewController (HideStatusBar)
@end
#import "UIViewController+HideStatusBar.h"
@implementation UIViewController (HideStatusBar)
//Pragma Marks suppress compiler warning in LLVM.
//Technically, you shouldn't override methods by using a category,
//but I feel that in this case it won't hurt so long as you truly
//want every view controller to hide the status bar.
//Other opinions on this are definitely welcome
#pragma clang diagnostic Push
#pragma clang diagnostic ignored "-Wobjc-protocol-method-implementation"
- (BOOL)prefersStatusBarHidden
{
return YES;
}
#pragma clang diagnostic pop
@end
Dans la liste ajouter ----
Afficher l'apparence de la barre d'état basée sur le contrôleur --- NON
Dans chaque viewController write
- (void) viewDidLayoutSubviews
{
CGRect viewBounds = self.view.bounds;
CGFloat topBarOffset = 20.0;
viewBounds.Origin.y = -topBarOffset;
self.view.bounds = viewBounds;
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];//for status bar style
}
Problème de barre d'état dans iOS 7, mais la cible doit être 5.1 et supérieure pour l'application
-(BOOL)prefersStatusBarHidden { return YES; }
Steps For Masquer la barre d'état dans iOS 7:
1.Allez dans le fichier info.plist de votre application.
2.And Set, Afficher l’apparence de la barre d’état basée sur le contrôleur: Boolean NO
J'espère que j'ai résolu le problème de la barre d'état .....
Pour iOS 7 dans une vue unique, utilisez la méthode viewWillappear:
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:NO];
Pour afficher la barre d'état, utilisez:
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:NO];
Dans le fichier Info Plist Ajouter une ligne pour la propriété suivante
Nom de la propriété: Afficher l'apparence de la barre d'état basée sur le contrôleur
Valeur: NO
Beaucoup de réponses sur ce fil fonctionnent, mais je crois comprendre que si vous essayez de faire quelque chose de dynamique, vous devrez éventuellement appeler:
[self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
J'ai essayé toutes les options affichées ici sur mon projet et elles ne fonctionneraient pas. Je pensais que cela pouvait être dû au fait que j'avais mis à jour mon Xcode
, puis l'application sur iOS 7 et que certains paramètres avaient été modifiés quelque part. J’ai décidé de construire un projet entièrement nouveau pour lui et après le simple paramétrage suivant: "Status bar is initially hidden = YES
" et "View controller-based status bar appearance = NO
" "comme indiqué par beaucoup d’autres, cela fonctionnait correctement (c.-à-d. Aucune barre d’état).
Mon conseil si vous travaillez sur un projet qui a été mis à jour vers iOS 7 à partir d’une ancienne version et qui a essayé toutes les autres options est de construire un nouveau projet.
Essayez d'ajouter la méthode suivante au contrôleur de vue racine de votre application:
- (BOOL)prefersStatusBarHidden
{
return YES;
}
Vous pouvez vérifier ceci code , pod IViewController + ODStatusBar
Pour masquer la barre d'état d'un viewController spécifique
- (BOOL)prefersStatusBarHidden {
return YES;
}
Pour définir la barre d'état Masqué pour l'application:
set View controller-based status bar appearance
toNO
dans .plist et dans application: didFinishLaunchingWithOptions:
set: [application setStatusBarHidden:YES];
Remarque: setStatusBarHidden: obsolète
OR
dans les paramètres du projet -> onglet Général -> informations de déploiement
Cochez la case Hide Status bar
.
Pour Swift 2.0+ IOS 9
override func prefersStatusBarHidden() -> Bool {
return true
}