Как установить цвет содержимого строки состояния на белый на iOS 7

Цвет моих приложений - черный. Причина, что весь вид находится ниже строки состояния на iOS 7, контент в строке состояния будет трудно отличить. Итак, как изменить цвет строк состояния в белый?

Я пробовал preferredStatusBarStyle и несколько других способов, но не смог.

Ответ 1

  • Установите "Просмотр строки состояния на основе контроллера" на НЕТ в файле info.list;
  • Вставка

    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
    

    до -application:didFinishLaunchingWithOptions: приложения AppDelegate.m.


Примечание: UIStatusBarStyleDefault - это значение по умолчанию для стиля строки состояния, вместо этого оно отображает черный контент. Оба UIStatusBarStyleBlackTranslucent и UIStatusBarStyleBlackOpaque устарели в iOS 7.0.


ОБНОВЛЕНИЕ для iOS 9:

Как упоминалось @ZakariaDarwish, метод -setStatusBarStyle устарел в iOS 9. (Примечание: оригинальный вопрос был задан для iOS 7 давно, а я не поддерживайте его сейчас, новое решение ниже работает для меня под iOS 9, поэтому обновляйте здесь.)

Итак, единственный путь (по крайней мере на данный момент) - реализовать -preferredStatusBarStyle в вашем контроллере представления (не забудьте установить "Просмотреть строку состояния на панели управления" на YES).

Вы можете вызвать метод экземпляра UIViewController -setNeedsStatusBarAppearanceUpdate после изменения значения в -preferredStatusBarStyle или -prefersStatusBarHidden.

Есть также два метода -childViewControllerForStatusBarStyle и -childViewControllerForStatusBarHidden, чтобы вернуть предпочтительный стиль из контроллера детского представления, как вы хотите.

, например, если вы использовали ниже методы

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault animated:YES];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];

чтобы переключить стиль строки состояния раньше, вы можете использовать пример кода ниже

- (void)shouldChangeStatusBarStyleToLightContent:(BOOL)toLightContent
                                        animated:(BOOL)animated
{
  _shouldChangeStatusBarStyleToLightContent = toLightContent;
  if (animated) {
    [UIView animateWithDuration:.3f animations:^{ [self setNeedsStatusBarAppearanceUpdate]; }];
  } else {
    [self setNeedsStatusBarAppearanceUpdate];
  }
}

- (UIStatusBarStyle)preferredStatusBarStyle
{
  return (_shouldChangeStatusBarStyleToLightContent ? UIStatusBarStyleLightContent : UIStatusBarStyleDefault);
}

для этого обновленного решения.

Ответ 2

В файле * -Info.plist:

  • Установите "Просмотр состояния панели управления на основе контроллера" на NO
  • Установите "Стиль строки состояния" на UIStatusBarStyleLightContent

В качестве альтернативы вы можете указать стиль строки состояния как "черный непрозрачный" или "черный прозрачный" на вкладке "Общие" цели. (в Xcode 5.0.1). Но они являются устаревшими значениями.

Ответ 3

Я использую это в основном контроллере:

- (UIStatusBarStyle)preferredStatusBarStyle
{
    return UIStatusBarStyleLightContent;
}

Ответ 4

Поместите эти два ключа в info.plist

введите описание изображения здесь

Ответ 5

Здесь короткое и простое решение для установки цвета строки состояния Белый

1) Сначала скопируйте эту строку View controller-based status bar appearance в файл .plist и установите Boolean NO;

2) В файле AppDelegate.m в разделе didFinishLaunchingWithOptions вставьте этот

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

ИЛИ добавить в .plist

введите описание изображения здесь

Ответ 6

iOS 9 (устаревшее предупреждение об отказе)

[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;

Ответ 7

    #ifdef __IPHONE_7_0
    # define STATUS_STYLE UIStatusBarStyleLightContent
    #else
    # define STATUS_STYLE UIStatusBarStyleBlackTranslucent
    #endif

    [[UIApplication sharedApplication] setStatusBarStyle:STATUS_STYLE animated:YES];

Ответ 8

Просто заметьте, так как это было там. Если вы используете UINavigationController, вы можете выбросить его в контроллер вида viewDidLoad:

self.navigationController.navigationBar.barStyle = UIStatusBarStyleLightContent;

Ответ 9

Если ваше приложение имеет цвет содержимого строки состояния для каждого контроллера представления, предпочтительный метод будет реализовывать

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

Если вам нужно изменить цвет содержимого бара глобально по всему приложению, добавьте следующие строки кода в свой метод didFinishLaunchingWithOptions в AppDelegate

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        UIApplication.shared.statusBarStyle = .lightContent
        return true
    }

Подождите, когда statusBarStyle ничего не делает, если ваше приложение использует стандартную систему состояния на основе UIViewController. Для этого

Установите "Просмотр состояния панели управления на основе контроллера" на NO в файле info.list

Ответ 10

Чтобы сделать это программно в Swift 3, попробуйте это в любом месте вашего контроллера.

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
  }

Я также установил ключ plist "Просмотреть статус панели управления на основе контроллера" на "YES".