Как установить цвет содержимого строки состояния на белый в iOS 7
цвет фона моего приложения черный. Причина весь вид находится ниже строки состояния на iOS 7, содержимое в строке состояния будет трудно отличить. Итак, как изменить цвет содержимого строки состояния на белый?
Я пробовал preferredStatusBarStyle и несколько других способов, но не получилось.
10 ответов:
- установите "внешний вид строки состояния на основе контроллера" в нет в своем информация.список file;
вставить
[[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:
- установите "вид контроллера на основе внешнего вида строки состояния" в НЕТ
- установите "стиль строки состояния" в UIStatusBarStyleLightContent
в качестве альтернативы вы можете указать стиль строки состояния как "черный непрозрачный" или "черный полупрозрачный" в общей вкладке цели.(в Xcode 5.0.1) но они являются устаревшими значениями.
Я использую это в главный контроллер:
- (UIStatusBarStyle)preferredStatusBarStyle { return UIStatusBarStyleLightContent; }
здесь короткое и простое решение для установки цвета строки состояния Белый
1) Сначала скопируйте эту строку
View controller-based status bar appearanceв свой .plist файл и установить логическое значениеNO;2) в AppDelegate.м под didFinishLaunchingWithOptions вставить
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:YES]; [[UIApplication sharedApplication] setStatusBarHidden:NO];или добавить в .файл plist
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