Je voudrais supprimer la barre d'état en haut de l'écran.
Cela ne fonctionne pas:
func application
(application: UIApplication,
didFinishLaunchingWithOptions launchOptions: NSDictionary?)
-> Bool
{
application.statusBarHidden = true
return true
}
J'ai aussi essayé:
func application
(application: UIApplication,
didFinishLaunchingWithOptions launchOptions: NSDictionary?)
-> Bool
{
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
var controller = UIViewController()
application.statusBarHidden = true
controller.setNeedsStatusBarAppearanceUpdate()
var view = UIView(frame: CGRectMake(0, 0, 320, 568))
view.backgroundColor = UIColor.redColor()
controller.view = view
var label = UILabel(frame: CGRectMake(0, 0, 200, 21))
label.center = CGPointMake(160, 284)
label.textAlignment = NSTextAlignment.Center
label.text = "Hello World"
controller.view.addSubview(label)
self.window!.rootViewController = controller
self.window!.makeKeyAndVisible()
return true
}
Réponses:
Vous devez vraiment implémenter prefersStatusBarHidden sur vos contrôleurs de vue:
Swift 3 et versions ultérieures
la source
Ajoutez le code, à l'intérieur de la méthode
TERMINÉ! Exécutez votre application et plus de barre d'état!
la source
Swift 3
En
Info.plist
setView controller-based status bar appearance
àNO
Et appeler
UIApplication.shared.isStatusBarHidden = true
la source
Si vous souhaitez masquer et ramener la barre d'état au toucher du bouton , alors qu'au moment de présenter et de fermer le menu coulissant , des popups etc., vous pouvez utiliser cette méthode: -
Pour masquer la barre d'état: -
Pour ramener la barre d'état: -
la source
prefersStatusBarHidden
propriété comme ce qui a déjà été mentionné.prefersStatusBarHidden
est que les vues liées à la barre d'état à l'aide de contraintes, ainsi que les barres de navigation, se déplaceront de manière incorrecte si vous activez / désactivez la barre d'état à l'aide deprefersStatusBarHidden
. Pour l'instant, seule cette réponse semble contourner ce problème.prefersStatusBarHidden
votre contrainte. Jusqu'à présent, cela fait le travail. Cependant, j'utilise un petit emballage pour éviter d'utiliser des singletons, vous pouvez le trouver icisi vous préférez une approche visuelle plutôt que de la coder, utilisez cette méthode: dans votre
info.plist
ajouter simplement
View controller-based status bar appearance
àNO
et
Status bar is initially hidden
commeYES
la source
la source
Mise à jour pour iOS 10 / Swift 3.0
Plus une fonction, maintenant une propriété ...
la source
get { }
si vous n'en avez passet
, écrivez simplementreturn true
dans Swift 3.x:
la source
Accédez à votre Info.plist et ajoutez deux clés:
la source
Donc, le problème ici n'a rien à voir avec Swift, mais juste comment l'apparence de la barre d'état est gérée depuis iOS 7.
Par défaut, les contrôleurs de vue contrôlent individuellement l'apparence de la barre d'état lorsqu'ils sont à l'écran. Si vous souhaitez utiliser cette méthode de contrôle de la barre d'état, vous pouvez remplacer les méthodes suivantes pour les contrôleurs de vue dont vous souhaitez modifier l'apparence:
prefersStatusBarHidden
,preferredStatusBarStyle
,preferredStatusBarAnimation
,Dans votre cas, vous implémenteriez
prefersStatusBarHidden
et reviendrieztrue
.L'autre façon serait de contrôler l'apparence de la barre d'état au niveau de l'application. Cela semble être ce que vous essayez de faire (en définissant
application.statusBarHidden
).Pour que cela fonctionne, vous devez ouvrir le
Info.plist
fichier de votre application et ajouter la cléUIViewControllerBasedStatusBarAppearance
et lui donner une valeur deNO
.la source
En fait, je l'ai compris moi-même. Je vais ajouter ma solution comme une autre option.
la source
D'accord, cela devient donc un problème pour moi car iOS 9 ne prend pas en charge la méthode mentionnée ici, comme
UIApplication.sharedApplication().statusBarHidden = true
ouet
fonctionne mais ne fournit pas de solution programmable où je peux changer à une condition. (
statusBarHidden = true
etstatusBarHidden = false
comme nous l'avons fait auparavant).Solution à cette folie:
En ajoutant des éléments
prefersStatusBarHidden()
comme ci-dessous, vous pouvez contrôler par programme le masquage et l' affichage de la barre d'état sans ajouter deUIViewControllerBasedStatusBarAppearance
paramètre à votre info.plist :puis utilisez-le comme ceci dans tout votre code:
OU
la source
prefersStatusBarHidden
appel a- t - il un sens? Je suppose que vous voulez direself.setNeedsStatusBarAppearanceUpdate()
aprèsshowStatusBar
affectationJuste pour ajouter, lors du remplacement de la
prefersStatusBarHidden
méthode ou de la variable, leView controller-based status bar appearance
fichier dans Info.plist doit être OUI, sinon le remplacement n'aura aucun effetla source
dans Swift 4.2, c'est maintenant une propriété.
la source
Dans mon cas, je cherchais la barre d'état pour masquer / afficher à la demande; au lieu du moment où la vue se charge ou disparaît.
rapide 3.x
la source
Swift 5: dans le contrôleur de vue principal, ou le contrôleur de navigation principal si vous en avez,
Et "Afficher l'apparence de la barre d'état basée sur le contrôleur" dans plist doit être OUI, sinon le code ci-dessus ne sera pas appelé.
Si vous souhaitez masquer la barre d'état lors du lancement de l'application, "La barre d'état est initialement masquée" dans plist doit être OUI. Cela peut empêcher la distorsion de l'image de lancement lorsqu'une barre bleue supplémentaire s'affiche en haut de l'écran.
la source
Une solution qui fonctionne pour moi; si vous souhaitez masquer la barre d'état sur un contrôleur de vue spécifique lors du chargement:
Attention: si vous définissez la clé " Afficher l'apparence de la barre d'état basée sur le contrôleur " sur " NON " dans votre info.plist, le code ci-dessus ne fonctionne pas. Vous devez définir la clé sur " OUI " ou la supprimer de info.plist
la source
Dans votre projet Général-> Informations sur le déploiement-> Style de la barre d'état sélectionnez la coche de Masquer la barre d'état Remarque: - il masque la barre d'état dans toute l'application
la source
Pour Swift 4+, essayez le code suivant (testé sur Swift 4.0, 4.1 - IOS 10, 11):
la source
Swift 5+
Dans mon cas, je dois mettre à jour la barre d'état cachée en fonction de certaines conditions.
Pour cette raison, je crée un contrôleur de base
BaseViewController
qui contient une nouvelle propriétéhideStatusBar
.Les autres contrôleurs de vue sont des sous-classes de ce contrôleur de base. Enfin, lorsque je souhaite mettre à jour le comportement de la barre d'état, il me suffit de modifier cette
hideStatusBar
valeur.Comment utiliser
Démo
Voici une démo que j'utilise
UIView.animate(...)
pour rendre la transition plus fluide.la source
J'utilise Xcode 8.1 (8B62) avec une cible de déploiement définie sur 10.1 et je n'ai pas eu beaucoup de chance avec les options de remplacement mentionnées ci-dessus. Cependant, la vérification de l'option "Masquer la barre d'état" dans les informations de déploiement a fait l'affaire pour moi.
Projet> Général
J'espère que ça aide.
la source
Si vous présentez le contrôleur de vue de manière modale, essayez
la source
la source
Vous pouvez utiliser ce code dans votre
ViewController
Class
scope
la source
Dans votre projet-> Général-> Informations de déploiement
Style de barre d'état: -
vient de marquer Masquer la barre d'état (iOS 10)
la source
Swift 4
la source
Mis à jour pour iOS 13 et Swift 5
Si aucune des réponses ci-dessus ne vous convient. Vérifiez votre plist pour voir si vous avez ceci:
"Afficher l'apparence de la barre d'état basée sur le contrôleur"
Si oui, assurez-vous de le régler sur OUI !!!!!
Ensuite, le code suivant fonctionnera.
la source