6

Looking through all the solutions given to similar questions, I have been trying to get the statusBar to show/hide with a tap gesture.

I have set View controller-based status bar appearance = NO in the plist.

I have tried the following code in my DataViewController (page view controller) AND in the RootViewController:

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

and it doesn't work.

This is embedded in a UITabBarController, would that make a difference?

Also, I was able to get the following to hide the statusBar from the RootViewController:

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

But the DataViewController does not even call this function, and was only able to hide it permanently this way, rather than toggle it on/off.

Any ideas?

Milad Faridnia
  • 9,113
  • 13
  • 65
  • 78
Michael Campsall
  • 4,325
  • 11
  • 37
  • 52

2 Answers2

3

I have tried it in code, everything works fine for me. Make sure that the View controller-based status bar appearance is Set to NO. And there is no needs to override prefersStatusBarHidden().

liuyaodong
  • 2,547
  • 18
  • 31
0

if you using UIPageViewController then you should use this code in the RootViewController

if you have a navigationController it will hide it too

on ViewDidLoad()

self.navigationController?.hidesBarsOnTap = true

and use this method to hide or show the status Bar based on if the navigationBar is hidden or not

override func prefersStatusBarHidden() -> Bool {
        if self.navigationController?.navigationBarHidden == true {
            return true
        }
        else
        {
            return false
        }
   }
Milad Faridnia
  • 9,113
  • 13
  • 65
  • 78
Amr Mohamed
  • 2,290
  • 4
  • 20
  • 39