Как установить цвет содержимого строки состояния на белый на iOS 7
Цвет моих приложений - черный. Причина, что весь вид находится ниже строки состояния на iOS 7, контент в строке состояния будет трудно отличить. Итак, как изменить цвет строк состояния в белый?
Я пробовал preferredStatusBarStyle
и несколько других способов, но не смог.
Ответы
Ответ 1
Примечание: 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".