Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

setStatusBarHidden deprecated, but only thing that works

I've tried all the solutions I can find including those in: setStatusBarHidden is deprecated in iOS 9.0 but none of them work with my application.

It is a simple, single view application. There is a Navigation bar with a single button on it which the status bar should show on top of.

In my .plist:

Status bar is initially hidden: NO

Status bar style: UIStatusBarStyleLightContent

View Controller based status bar appearance: NO

Changing any of these doesn't seem to make any difference at all. I have the status bar style "Hide during application launch" option checked as I don't want it to appear on the splash screen.

I have:

- (BOOL)prefersStatusBarHidden 
{
    return NO;
}

-(UIStatusBarStyle)preferredStatusBarStyle
{
    NSLog(@"style");
    return UIStatusBarStyleLightContent;
}

and setNeedsStatusBarAppearanceUpdate which are definitely all called when the view loads in my ViewController.

The view is established in a .storyboard, but many of the fields are manipulated in the ViewController.m as well. The value assigned to the status bar in the simulated metrics doesn't seem to have any effect either.

I need my status bar to be hidden during the launch screen and visible on the viewController. Please help me find a solution that doesn't use the deprecated setStatusbarHidden!

EDIT:

I still haven't solved this, and I surely can't be the only one with this problem! It happens in both apps that I have written.

like image 258
CHiroshiWard Avatar asked Aug 18 '15 08:08

CHiroshiWard


2 Answers

I've just been trying to solve the same problem, I don't know why the setStatusBarHidden and setStatusBarStyle have been deprecated as the new methods are not at all intuitive.

To hide the status bar on launch I have these settings in my plist:

View controller-based status bar appearance: YES
Status bar is initially hidden: YES

Then to show the status bar after launch I have in my view controller:

- (BOOL)prefersStatusBarHidden {    
    return NO;
}

-(UIStatusBarStyle)preferredStatusBarStyle {
    return UIStatusBarStyleLightContent;
}

This still didn't work until I found this answer https://stackoverflow.com/a/19365160/488611. So in viewDidLoad I also set the navigation bar style:

self.navigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent;

Which makes absolutely no sense, but works.

like image 162
James P Avatar answered Oct 22 '22 02:10

James P


you can use

application.statusBarHidden=YES; 

in AppDelegate.m

didFinishLaunchingWithOptions
like image 42
Amol Suryawanshi Avatar answered Oct 22 '22 00:10

Amol Suryawanshi