2015-12-29 2 views
3

У меня есть примеры фотографий, чтобы показать вам, что я хочу и что у меня есть сейчас.Спрятать UIStatusBar, не удаляя выделенного для него пространства

Во-первых, вот пример того, что я пытаюсь сделать, из Слак приложения:

обычно отображается строка состояния:

enter image description here

Но при открытии боковой ящик , он уходит:

enter image description here

я могу отобразить строку состояния в моем приложении:

enter image description here

Но когда я скрыть это, она также скрывает рамку, так что меньше места на вершине, чем раньше:

enter image description here

Это выглядит шатким, чтобы удалить пространство из верхней всякий раз, когда открывается боковой ящик, но также плохо выглядит, чтобы не скрывать строку состояния, поскольку меню имеет другой цвет фона. Как я могу скрыть текст в строке состояния, сохраняя при этом пространство для него?

ответ

2

Я думаю, что вы хотите что-то вроде следующего (In Swift, цель Deploy 9.0):

Чтобы скрыть это:

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); 
    }) 

Чтобы показать его снова:

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 «Не уверен, что вы столкнетесь с той же проблемой, что и я, но когда я протестировал код, у меня изначально не было этого« -0.00001 », и переход был негладким, но это небольшое вычитание исправило его. Не знаю, почему.

+0

Это сделал трюк. Благодаря! – LulzCow

0

я не мог получить ответ принят на работу на 10 прошивкой в ​​Swift 3. Так вот что я придумал:

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) 
     }) 
    } 
} 
Смежные вопросы