Show/Hide status bar in only one ViewController, objective C, iOS

ios, objective-c, statusbar

Solution

For each view controller you want to change the visibility of the status bar you need to override `prefersStatusBarHidden`. For this to actually work though, you must add the following key/value in your project's `Info.plist`:

Key: `View controller-based status bar appearance`

Value: `YES`

To control the visibility of the status bar in `viewWillAppear` and `viewWillDisappear` you can do:

var statusBarHidden = false

override func viewWillAppear() {
    super.viewWillAppear()
    statusBarHidden = false
    self.setNeedsStatusBarAppearanceUpdate()
}

override func viewWillDisappear() {
    super.viewWillDisappear()
    statusBarHidden = true
    self.setNeedsStatusBarAppearanceUpdate()
}

override var prefersStatusBarHidden: Bool {
    return statusBarHidden
}

Problem

I want status bar to show up in viewWillAppear() and disappear in viewWillDisappear() of my ViewController I was using ``` [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:NO]; ``` but it is deprecated in iOS 9.0 I am using ``` UIApplication.shared.isStatusBarHidden = false ``` in swift, but in objective C this is readonly value... prefersStatusBarHidden also does not work for me, because I need to hide status bar in viewWillDisappear() function ``` -(BOOL)prefersStatusBarHidden{ return YES; } ``` Can anybody help me?

Original source