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



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



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

581   10  

10 ответов:

  1. установите "внешний вид строки состояния на основе контроллера" в нет в своем информация.список file;
  2. вставить

    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
    

    до -application:didFinishLaunchingWithOptions: из AppDelegate.м.


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


обновление для iOS 9:

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

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

вы можете вызвать метод экземпляра 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);
}
обновление решение сейчас.

в вашем * - Info.plist file:

  1. установите "вид контроллера на основе внешнего вида строки состояния" в НЕТ
  2. установите "стиль строки состояния" в UIStatusBarStyleLightContent

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

Я использую это в главный контроллер:

- (UIStatusBarStyle)preferredStatusBarStyle
{
    return UIStatusBarStyleLightContent;
}

поместите эти два ключа в информация.файл plist

enter image description here

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

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

2) в AppDelegate.м под didFinishLaunchingWithOptions вставить

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

или добавить в .файл plist

enter image description here

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

[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
    #ifdef __IPHONE_7_0
    # define STATUS_STYLE UIStatusBarStyleLightContent
    #else
    # define STATUS_STYLE UIStatusBarStyleBlackTranslucent
    #endif

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

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

self.navigationController.navigationBar.barStyle = UIStatusBarStyleLightContent;

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

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 по умолчанию система строки состояния. За это

установите "внешний вид строки состояния на основе контроллера" в НЕТ в вашей информации.список файлов

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

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
  }

Я также установил ключ plist "внешний вид строки состояния на основе контроллера вида" в YES.

Comments

    Ничего не найдено.