web-dev-qa-db-fra.com

La barre d'état ne disparaîtra pas

Je crée une application et je veux que la barre d'état soit masquée. Lorsque je teste l'application, la barre d'état est masquée lorsque l'écran de démarrage est affiché, mais une fois l'application complètement chargée, la barre d'état réapparaît.

J'utilise Xcode 5 et iOS 7 et j'ai essayé de désactiver la barre d'état par programme

  ([[UIApplication sharedApplication] setStatusBarHidden:YES    
      withAnimation:UIStatusBarAnimationFade];),

dans le fichier info.plist et à l'aide de l'inspecteur d'attributs du fichier .xib. Rien ne semble fonctionner. 

Des idées?

110
user2397282

Essayez d’ajouter la méthode suivante au contrôleur de vue racine de votre application:

- (BOOL)prefersStatusBarHidden
{
    return YES;
}
220
Quentin

Vous devez ajouter cette valeur à plist: " Afficher l'apparence de la barre d'état basée sur le contrôleur " et la définir sur "NO".

Cela vous permettra de régler la barre d'état sur le mode masqué. Cela le place à un global contrairement aux autres réponses fournies.

UPDATE: Si vous souhaitez que la barre d'état soit masquée sur l'écran de démarrage, n'oubliez pas de marquer " Masquer lors du lancement de l'application " sur les options de barre d'état cible . Vous pouvez également ajouter " La barre d'état est initialement masquée "à"OUI"sur la pliste si vous ne voulez pas le faire avec du code dans l'application.

124
Idan

Le code que vous avez publié fonctionne pour iOS 6.1 et inférieur. Pour iOS 7, Apple a mis à disposition de nouvelles méthodes permettant de contrôler directement la barre d'état de chaque vue. La désactivation de cette option dans Info.plist vous permettra de masquer la barre d’état, au moins pour l’aperçu du développeur actuel (4).

Add this and set to NO

Pour référence, consultez le guide de transition iOS 7 disponible sur le portail des développeurs Apple.

73
Sven

eh bien, j'essaie de masquer la barre d'état dans toutes mes applications et dans "app" -info.plist et j'ajoute deux lignes dans le dictionnaire "Liste des propriétés de l'information" J'ajoute "Afficher l'apparence de la barre d'état basée sur le contrôleur" défini NO et dans La barre d'état est initialement masquée "définissez OUI et fonctionne pour moi n_n '

plist info

36
user_Dennis_Mostajo

Cependant, si vous utilisez UIImagePicker, la barre d'état apparaît à nouveau.

Dans ce cas, vous devriez masquer la barre d'état comme ci-dessous,

- (void)imagePickerController:(UIImagePickerController *)aPicker didFinishPickingMediaWithInfo:(NSDictionary *)info {

// for iOS7
    if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) {

        [[UIApplication sharedApplication] setStatusBarHidden:YES];
    }
17
alones

Après de longues recherches, j'ai finalement trouvé une solution très simple qui résout également le problème UIImagePickerController.

Comme indiqué dans les autres réponses, définissez la barre d'état masquée dans votre didDinegate didFinishLaunching, puis définissez "Afficher l'apparence de la barre d'état basée sur le contrôleur" sur NO.

Ensuite, dans votre AppDelegate:

- (void)application:(UIApplication *)application didChangeStatusBarFrame:(CGRect)oldStatusBarFrame
{
      [application setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
}

et voila - votre barre d’état restera masquée même lorsque le contrôle UIImagePickerController est prioritaire.

C’est mieux que de le «répéter» chaque fois que vous présentez un UIImagePickerController, car il reste masqué dans l’application.

8
ikuramedia

Pour masquer la barre d'état sur un UIViewController particulier, ajoutez simplement ceci:

-(BOOL)prefersStatusBarHidden
{
    return YES;
}

J'espère que cela t'aides !

7
Mike Gledhill

Vous pouvez masquer du résumé du projet. il y a une case à cocher masquer lors du lancement.

Voir l'instantané

enter image description here

5
sohail.hussain.dyn

J'ai trouvé cette solution pour moi. Cela fonctionne comme un charme . Écrivez ce code sur votre contrôleur de vue sur lequel vous voulez utiliser UIImagePickerController.

- (void)viewWillDisappear:(BOOL)animated
{
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
}
- (void)viewWillAppear:(BOOL)animated
{
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
     }
4
xevser

Solution rapide

ajoutez simplement ceci à vos contrôleurs de vue:

override func prefersStatusBarHidden() -> Bool {
    return true
}
3
Dan Beaulieu

En plus des réponses ci-dessus, assurez-vous d’implémenter la méthode imagePickerControllerDidCancel et d’y ajouter le même code. 

3
Swindler

J'avais aussi des problèmes avec UIImagePicker. Semblable à la réponse Alones, ma solution était la suivante. J'ai ajouté cette ligne ou code:

[[UIApplication sharedApplication] setStatusBarHidden:YES];

à cette fonction:

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated

Je n'ai pas testé cela avec iOS 6 ou version antérieure, mais cela fonctionne très bien sous iOS 7.

2
Dev01

Mon problème était que j'ai utilisé le confinement du contrôleur de vue. Seul le contrôleur de vue le plus haut, intégré à un contrôleur de navigation par exemple, peut masquer ou afficher la barre d'état.

0
testing

J'utilise Xcode 6, cette solution fonctionne pour iOS 7 et 8 pour moi:

Commencez par définir "Afficher l’apparence de la barre d’état basée sur le contrôleur" sur NON dans le fichier de liste.

Deuxièmement, dans AppDelegate, ajoutez ceci:

- (void)application:(UIApplication *)application didChangeStatusBarFrame:(CGRect)oldStatusBarFrame
{
      [application setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
}
0
RRN