Как изменить UIViewControllerBasedStatusBarAppearance на YES/NO программно в iOS 7?

Мое приложение имеет темный фон, но в iOS 7 панель состояния стала прозрачной. Поэтому я ничего не вижу там, только зеленый индикатор батареи в углу. Как изменить цвет текста строки состояния на зеленый или оранжевый, как на главном экране?

Я знаю о

  • Установите UIViewControllerBasedStatusBarAppearance на YES в plist

  • В viewDidLoad выполните a [self setNeedsStatusBarAppearanceUpdate];

  • Добавьте следующий метод:

    -(UIStatusBarStyle)preferredStatusBarStyle{ 
        return UIStatusBarStyleLightContent; 
    }
    

Как я могу программно изменить UIViewControllerBasedStatusBarAppearance?

Спасибо заранее...

Ответ 1

В Info.plist установите "Просмотр состояния панели управления на основе контроллера" как НЕТ.

то добавьте это в свой класс appdelegate.m в метод dofinishlaunchingwithoptions.

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:NO];

это работает для ios 7.

Ответ 2

Как упоминают другие, добавьте "Просмотр состояния панели управления на основе контроллера" в вашем приложении info.plist и установите для него тип: Логическое значение и значение: НЕТ

Для справки:

screenshot

В iOS 9

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:NO];

метод устарел.

Итак, вы можете использовать это:

application.statusBarStyle = UIStatusBarStyleLightContent;

добавить эту строку кода в метод

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

который присутствует в файле appDelegate.m. Это изменит цвет текста в строке состояния вашего приложения.

Итак, если у вас есть экран с фоном, который может быть темным или светлым, то на этом экране вы можете отображать цвет строки состояния, используя:

[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;

Надеюсь, что это поможет.