setStatusBarHidden is deprecated in iOS 9.0
I am upgrading my code from iOS 8 to iOS 9. I have a code snippet in my program
[[UIApplication applicationName] setStatusBarHidden:YES];
.
I am getting the warning "setStatusBarHidden is deprecated in iOS 9.0, Use -[UIViewController prefersStatusBarHidden". If I just replace 'setStatusBarHidden' with 'prefersStatusBarHidden', I get 'instance method not found'. Can someone please suggest me how to solve this problem?
Solution 1:
Add below code to your view controller..
- (BOOL)prefersStatusBarHidden {
return NO;
}
Note :
- If you change the return value for this method, call the
setNeedsStatusBarAppearanceUpdate
method. - For childViewController, To specify that a child view controller
should control preferred status bar hidden/unhidden state, implement
the
childViewControllerForStatusBarHidden
method.
Solution 2:
prefersStatusBarHidden is available from iOS 7+.
Use this in Your UIViewController
class
var isHidden = true{
didSet{
self.setNeedsStatusBarAppearanceUpdate()
}
}
override var prefersStatusBarHidden: Bool {
return isHidden
}
If you change the return value for this method, call the setNeedsStatusBarAppearanceUpdate() method. To specify that a child view controller should control preferred status bar hidden/unhidden state, implement the childViewControllerForStatusBarHidden method.
Solution 3:
you have to add method in yourViewController.m
- (BOOL)prefersStatusBarHidden {
return NO;
}
Solution 4:
Swift 3.1 Xcode 8.2.1
Change in info.plist the row View controller-based status bar appearance and set it to NO
In your target settings tick "Hide Status bar"
Both steps are required