2014-11-20 21 views
6

Przeglądając wszystkie rozwiązania dotyczące podobnych pytań, próbuję uzyskać statusBar, aby pokazać/schować za pomocą gestu dotykowego.Jak mogę pokazać/ukryć pasek stanu na stronie ViewController za pomocą gestu dotykowego (iOS8/Swift)

Ustawiłem View controller-based status bar appearance = NO w plist.

Próbowałem następujący kod w moim DataViewController (Widok strony kontrolera) oraz w RootViewController:

let app = UIApplication.sharedApplication() 
app.setStatusBarHidden(true, withAnimation: UIStatusBarAnimation.Fade) 

i to nie działa.

Jest to osadzone w UITabBarController, czy to ma znaczenie?

Również udało mi się uzyskać następujące czynności, aby ukryć pasek stanu z RootViewController:

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

ale DataViewController nawet nie wywołać tę funkcję, i był w stanie ukryć go na stałe w ten sposób, raczej niż włączać/wyłączać.

Wszelkie pomysły?

+0

To powinno zadziałać - czy na pewno wywoływana jest metoda wywołująca funkcję "setStatusBarHidden"? –

+0

breakpoint zostaje trafiony tam, tak. –

Odpowiedz

3

Próbowałem go w kodzie, wszystko działa dobrze dla mnie. Upewnij się, że View controller-based status bar appearance jest ustawiony na NO. I nie ma potrzeby, aby przesłonić prefersStatusBarHidden().

+0

Chcę być w stanie pokazać/ukryć pasek stanu gestem dotknięcia, czy to po prostu nie ukryje go w ogóle? –

+0

Niestety, źle zrozumiałem twoje pytanie. Próbowałem w moim kodzie i wszystko działa dobrze. Zobacz moją zaktualizowaną odpowiedź. – liuyaodong

+0

gdzie to nazywasz? w DataViewController? lub RootViewController? –

0

jeśli używasz UIPageViewController należy użyć tego kodu w RootViewController

jeśli masz navigationController będzie go ukryć zbyt

na ViewDidLoad()

self.navigationController?.hidesBarsOnTap = true

i używać tej metody ukryć lub pokazać pasek stanu na podstawie, czy jest ukryty, czy nie.

override func prefersStatusBarHidden() -> Bool { 
     if self.navigationController?.navigationBarHidden == true { 
      return true 
     } 
     else 
     { 
      return false 
     } 
    }