Dans la barre d'état de mes applications vidéo iOS, certains contrôleurs de vue masquent. J'ai fait cela en utilisant le code suivant.
[[UIApplication sharedApplication] setStatusBarHidden:YES];
Cela fonctionne pour iOS 5 et iOS 6, mais pas sous iOS 7.
J'ai essayé avec ce contrôleur de vue en particulier,
Par exemple:
-(BOOL)prefersStatusBarHidden { return YES; }
Cela fonctionne bien, mais je ne peux plus afficher la barre d’état dans le contrôleur de vue parent.
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".
Ajoutez les éléments suivants à votre Info.plist:
<key>UIStatusBarHidden</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
Ajouter la ligne suivante dans viewdidload
[[UIApplication sharedApplication] setStatusBarHidden:YES
withAnimation:UIStatusBarAnimationFade];
et ajouter une nouvelle méthode
- (BOOL)prefersStatusBarHidden {
return YES;
}
modifier également le fichier info.plist Afficher l’apparence de la barre d’état basée sur le contrôleur "= NON
ça marche pour moi
Dans la Pliste, ajoutez les propriétés suivantes.
Status bar is initially hidden = YES
View controller-based status bar appearance = NO
maintenant la barre d'état sera masquée.
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated]
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated]
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
}
override func viewWillAppear(animated: Bool)
{
super.viewWillAppear(animated)
UIApplication.sharedApplication().setStatusBarHidden(true, withAnimation: UIStatusBarAnimation.None)
}
override func viewWillDisappear(animated: Bool)
{
super.viewWillDisappear(animated)
UIApplication.sharedApplication().setStatusBarHidden(false, withAnimation: UIStatusBarAnimation.None)
}
J'ai fait ce qui suit et cela semble fonctionner (même sous iOS 8):
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) {
[[UIApplication sharedApplication] setStatusBarHidden:YES];
}
}
- (BOOL)prefersStatusBarHidden {
return YES;
}
Mais cela devient plus intéressant quand un UINavigationController est impliqué:
Pour masquer la barre d'état dans iOS7, vous avez besoin de 2 lignes de code.
dans application: (UIApplication *) application didFinishLaunchingWithOptions: (NSDictionary *) launchOptions write
[[UIApplication sharedApplication] setStatusBarHidden:YES];
dans info.plist ajouter ceci
View-Controller Based Status Bar Appearance = NO
Pour une meilleure compréhension, ajoutez des photos avec des commentaires:
App avant toute modification
Trouvé dans votre dossier Project Navigator
nommé Supporting Files
et cliquez sur le fichier * .plist
Après que vous aurez différents paramètres de votre application a montré. Vous devez ajouter 2 clés UIStatusBarHidden
et UIViewControllerBasedStatusBarAppearance
. Vous pouvez le faire simplement en cliquant sur le bouton +
Après avoir appuyé sur +, vous pouvez choisir l’une des touches. Il suffit de commencer à taper.
Version correcte:
Et enfin application après application de ces modifications:
En outre, vous pouvez trouver une solution alternative ici
Essayez ça
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
Dans iOS10, tout ce que je devais faire, c'est remplacer la prefersStatusBarHidden
var dans mon RootViewController
(Swift):
override var prefersStatusBarHidden: Bool {
return true
}
Voici la version Swift (pré iOS9):
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
UIApplication.sharedApplication().setStatusBarHidden(true, withAnimation: UIStatusBarAnimation.None)
}
override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated)
UIApplication.sharedApplication().setStatusBarHidden(false, withAnimation: UIStatusBarAnimation.None)
}
Cela fonctionne aussi (iOS7 +):
override func prefersStatusBarHidden() -> Bool {
return true
}
Vous devez également appeler:
setNeedsStatusBarAppearanceUpdate()
en dire viewDidLoad()
.
Notez que si vous utilisez un contrôleur SplitView, ou un autre contrôleur de vue container
, vous devez également le renvoyer à votre classe lorsqu'il est envoyé childViewControllerForStatusBarHidden
. Une façon de faire est d'avoir une variable publique faible pour dire statusController
et de la renvoyer dans cette méthode remplacée.
Pour masquer votre barre d'état dans iOS7:
Ouvrez votre fichier plist, puis ajoutez une ligne appelée "Afficher l'apparence de la barre d'état basée sur le contrôleur" et définissez sa valeur sur NO
.
iOS 9 et suivants:
Comme la méthode statusBarHidden
était obsolète depuis iOS9 , vous devez ajoutez deux valeurs dans plist comme ci-dessous:
<key>UIStatusBarHidden</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
ou par interface utilisateur s'il vous plaît refre image ci-dessous:
Comme statusBarHidden
est obsolète depuis iOS9 :
@property (readwrite, nonatomic, getter = isStatusBarHidden) BOOL statusBarHidden NS _ OBSOLÈTE _ IOS (2_0, 9_0 , "Utilisez - [UIViewController prefersStatusBarHidden]") __TVOS_PROHIBITED;
SOLUTION FIXE POUR Swift 3+ (iOS 9, 10)
1- Dans info.plist défini sous la propriété
2- Collez le code ci-dessous au contrôleur racine, à
private var isStatusBarHidden = true {
didSet {
setNeedsStatusBarAppearanceUpdate()
}
}
override var prefersStatusBarHidden: Bool {
return isStatusBarHidden
}
Vous pouvez appeler isStatusBarHidden = true
et isStatusBarHidden = false
où vous voulez hide/show
barre d'état
Vous devez ajouter cette valeur à la liste: "Afficher l'apparence de la barre d'état basée sur le contrôleur" et réglez-la sur "NON".
Étapes pour masquer la barre d'état sous iOS
1. ouvrir le fichier AppDelegate.m, ajouter application.statusBarHidden dans la méthode didFinishLaunchingWithOptions
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
application.statusBarHidden = YES;
return YES;
}
View controller-based status bar appearance
set NO
Pour répondre à la question de Susitha: utilisez setNeedsStatusBarAppearanceUpdate. Cela fera un appel à prefersStatusBarHidden pour l'actualiser avec l'état de la barre d'état souhaité. Essaye ça:
@property (nonatomic, getter=isHideStatusBar) BOOL hideStatusBar; // Give this a default value early
- (BOOL)prefersStatusBarHidden {
return self.isHideStatusBar;
}
- (void)someMethod {
// triggered by an event or user action
[self setHideStatusBar:YES];
[self setNeedsStatusBarAppearanceUpdate];
}
Si vous souhaitez voir à nouveau la barre d'état, définissez votre propriété hideStatusBar (ou le nom de votre choix) sur NO. Appelez preferStatusBarHidden indirectement en passant un autre appel à
[self setNeedsStatusBarAppearanceUpdate]
Swift 5
Utilisez les étapes suivantes pour masquer la barre d'état iOS:
Capture finale des paramètres:
Cela fonctionne sur Xcode 10.2
De UIKit
> UIApplication.h
:
// Setting statusBarHidden does nothing if your application is using the default UIViewController-based status bar system.
@property(nonatomic,getter=isStatusBarHidden) BOOL statusBarHidden;
- (void)setStatusBarHidden:(BOOL)hidden withAnimation:(UIStatusBarAnimation)animation NS_AVAILABLE_IOS(3_2);
Donc, devrait définir View controller-based status bar appearance
à NO
Mise à jour pour Swift 3:
Mettez à jour Info.plist avec les informations suivantes:
View controller-based status bar appearance: NO
Ensuite, dans un ViewController ou ailleurs:
UIApplication.shared.isStatusBarHidden = true