2015-12-29 1 views
3

J'ai des exemples d'images pour vous montrer ce que je veux et ce que j'ai en ce moment.Masquer UIStatusBar sans enlever l'espace qui lui est alloué

Tout d'abord, voici un exemple de ce que je suis en train de faire, de l'application Slack:

La barre d'état est normalement affiché:

enter image description here

Mais lorsque vous ouvrez le tiroir latéral , il en va:

enter image description here

je peux afficher la barre d'état dans mon application:

enter image description here

Mais quand je le cache, il cache aussi le cadre, donc il y a moins d'espace au sommet qu'auparavant:

enter image description here

Il semble bancal supprimer l'espace du haut chaque fois que le tiroir latéral s'ouvre, mais il semble également mauvais de ne pas masquer la barre d'état puisque le menu a une couleur de fond différente. Comment puis-je cacher le texte sur la barre d'état tout en gardant l'espace pour cela?

Répondre

2

Je pense que vous voulez quelque chose comme ce qui suit (Swift, cible Deploy est 9.0):

pour le cacher:

UIApplication.sharedApplication().setStatusBarHidden(true, withAnimation: .Fade) 
    let appFrame:CGRect = UIScreen.mainScreen().applicationFrame 

    UIView.animateWithDuration(0.3, animations: { 
     self.navigationController?.navigationBar.frame = self.navigationController!.navigationBar.bounds 
     self.view.window!.frame = CGRectMake(0, 0, appFrame.size.width, appFrame.size.height); 
    }) 

Pour montrer encore:

let appFrame:CGRect = UIScreen.mainScreen().applicationFrame 
    UIApplication.sharedApplication().setStatusBarHidden(false, withAnimation: .Fade) 

    UIView.animateWithDuration(0.3, animations: { 
     self.navigationController?.navigationBar.frame = self.navigationController!.navigationBar.bounds 
     self.view.window!.frame = CGRectMake(0, 0, appFrame.size.width, appFrame.size.height-0.00001); 
    }) 

I Je ne suis pas sûr que vous rencontrerez le même problème que moi, mais quand j'ai testé le code, je n'avais pas ce "-0.00001" et la transition n'était pas lisse mais cette petite soustraction l'a corrigé. Pas certain de pourquoi.

+0

Cela a fait l'affaire. Merci! – LulzCow

0

Je ne pouvais pas la réponse accepté de travailler sur iOS 10 à Swift 3. Voici donc ce que je suis venu avec:

class ViewController: UIViewController { 

    override var prefersStatusBarHidden: Bool { 
     return true 
    } 

    override func viewDidAppear(_ animated: Bool) { 
     super.viewDidAppear(animated) 

     UIView.animate(withDuration: 0.3, animations: { 
      let bounds = self.navigationController!.navigationBar.bounds 
      self.navigationController?.navigationBar.frame = CGRect(x: 0, y: 0, width: bounds.width, height: bounds.height + 20) 
     }) 
    } 
}