Как изменить цвет текста строки состояния в iOS

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

Комментарии к вопросу (1)
Решение
  1. Установите для параметра UIViewControllerBasedStatusBarAppearance значение YES в файле .plist.

  2. В viewDidLoad сделайте [self setNeedsStatusBarAppearanceUpdate];.

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

     - (UIStatusBarStyle)preferredStatusBarStyle
     {
         return UIStatusBarStyleLightContent;
     }

Примечание: Это не работает для контроллеров внутри UINavigationController, пожалуйста, смотрите Tyson's comment below :)

Swift 3 - Это будет работать для контроллеров внутри UINavigationController. Добавьте этот код внутрь вашего контроллера.

// Preferred status bar style lightContent to use on dark background.
// Swift 3
override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

Swift 5 и SwiftUI.

Для SwiftUI создайте новый swift-файл под названием HostingController.swift.

import Foundation
import UIKit
import SwiftUI

class HostingController: UIHostingController {
    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }
}

Затем измените следующие строки кода в файле SceneDelegate.swift

window.rootViewController = UIHostingController(rootView: ContentView())

на

window.rootViewController = HostingController(rootView: ContentView())
Комментарии (18)

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

  1. Сеть на основе контроллера вид статус бар внешний видкнетв инфо свой.файл plist`.
  2. Вызов [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

Примечание: этот метод был осужден в iOS9. PreferredStatusBarStyle использовать на для UIViewController вместо этого. (см. библиотека разработчика Apple)

Комментарии (18)

Вы можете сделать это без написания какого-либо кода! <БР/> Выполните следующие действия, чтобы сделать статус бар цвет текста белый через все приложения

На вас проект plist в файл:

  • Статус бар стиль: прозрачный черный стиль (Альфа 0.5)`
  • Вид-контроллер на основе статус-бар внешний вид: "нет"
  • Статус бар изначально скрыто: "нет"
Комментарии (15)

Примечание: наиболее upvoted ответ не работает для iOS 7 / 8

В Инфо.plist в комплект 'контроллер на основе статус-бар внешний вид' как не

В файле AppDelegate добавить

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

для

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
   ......
   ...
}    

Это решение работает для iOS 7 / 8

Комментарии (2)

Для меня ничего не было с помощью все вещи в другие ответы (и из других источников/документации). Что же поможет, чтобы задать стиль панели навигации, чтобы "Черный" в XIB. Это изменило текст белый без какого-либо кода.

Комментарии (10)

Это не сработало для меня, так вот рабочее решение...

В Информация.файл plist, добавьте строку:

UIViewControllerBasedStatusBarAppearance, и установите значение "нет".

Затем в файле AppDelegate в didFinishLaunchingWithOptions в`, добавьте эти строки:

[application setStatusBarHidden:NO];
[application setStatusBarStyle:UIStatusBarStyleLightContent];
Комментарии (2)

Вам не нужно делать каких-либо код для этого

Нужно добавить, что "контроллер на основе статус-бар внешний вид на" ключ в Info.plist как следующее:

& задать его тип значения булево & значение "нет". Затем нажмите на настройки проекта,затем щелкните на вкладке Общие & под информация развертывания установить предпочтительный статус бар для .Света следующим образом:

Вот и все.

Комментарии (7)

Всего два шага следующим образом:

Шаг 1:

На вкладке Информация о цели проекта, добавить строку:

UIViewControllerBasedStatusBarAppearance, установите значение "нет".

Шаг 2:

В файле AppDelegate проекта:

- (BOOL)application:(UIApplication *)application 
        didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
    …
    [application setStatusBarStyle:UIStatusBarStyleLightContent];
    …
}
Комментарии (5)

Это работает в Голден мастер на iOS 7 и Xcode 5 и iOS7 семян ГМ СДК выпущен 18 сентября 2013 года (по крайней мере с навигационным контроллером скрыты):

  1. Набор в UIViewControllerBasedStatusBarAppearance на нет в Информация.файл plist.

  2. В метод viewDidLoad метод или везде, где вы хотите изменить статус бар в стиле: [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

Комментарии (7)

В вашем случае для UIViewController внутри UINavigationController вам придется установить BarStyle:

-[UINavigationBar setBarStyle:UIBarStyleBlack]

Оригинальный ответ здесь

https://devforums.apple.com/message/844264#844264

Комментарии (2)

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

-(UIStatusBarStyle)preferredStatusBarStyle{ 
    return UIStatusBarStyleLightContent; 
} 

Это должно быть все, что вам нужно.

Комментарии (3)

Я'м, используя в Xcode 6 бета 5 на Свифт проект, для приложение iOS 7.

Вот что я сделал, и это работает:

информация.файл plist:

Комментарии (4)

В Файле AppDelegate.м добавить следующее.

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

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

} 

И в файл plist, набор 'контроллер на основе статус-бар внешний вид' не.

Комментарии (0)

Ну, это действительно работает как кусок торта для меня.

Перейти в приложение'ы информация.файл plist.

  1. Набор Вид-Контроллер на основе статус-бар внешний вид к нет
  2. Статус бар набор кUIStatusBarStyleLightContent`

Затем перейти в приложение'ы делегат и вставьте следующий код, где вы установите свой Windows'ы RootViewController.

#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)

if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0"))
{
    UIView *view=[[UIView alloc] initWithFrame:CGRectMake(0, 0,320, 20)];
    view.backgroundColor=[UIColor colorWithRed:0/255.0 green:0/255.0 blue:0/255.0 alpha:1.0];
    [self.window.rootViewController.view addSubview:view];
}

Бинго. Это's работает для меня.

Комментарии (1)

Просто В Файле AppDelegate

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
Комментарии (3)
  1. Перейти к "Проект" - > цель,

  2. Тогда статус бар установить `всвет`. Это делает статус-бар белая с экрана запуска. ![Установка] Проект[1]

  3. Затем посмотреть контроллер на основе статус-бар внешний видравнонетВинформация.файл plist`.

Комментарии (1)

В Свифт-3 очень легко, просто с 2 шагов. Перейти к вашей информации.plist и изменить на основе контроллера просмотреть ключ статус бар внешний вид к "нет". Затем в файле AppDelegate просто добавьте эту строку в метод didFinishLaunchingWithOptions

  func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        UIApplication.shared.statusBarStyle = .lightContent
        return true
    }

это рекомендуется в iOS9 теперь вы должны сделать переопределить это свойство в rootviewcontroller

делать это рекомендуется в iOS 9 должны сделать это на rootviewcontroller

override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
 }
Комментарии (2)

ОС iOS 7 позволяет отдельным видом контроллеров, чтобы определить внешний вид строки состояния, как описано в документации для разработчиков Apple:

для iOS 7 дает вид контроллеров возможность настроить стиль строки состояния во время выполнения приложения. Хороший способ, чтобы динамически изменять статус бар для реализации preferredStatusBarStyle а—в блок—обновление анимации статус-бар внешний вид и называем setNeedsStatusBarAppearanceUpdate`.

Устанавливая статус бар появление в мире-это двухэтапный процесс.

Во-первых, нужно сказать, iOS, что вы Дон'т хотите, чтобы установить статус-бар внешний вид на вид на вид на основании.

Затем вы должны взять на себя ответственность и фактически установила новый мировой статус баре.

Чтобы отключить вид-под-вид управления в строке состояния, вы'll необходимо, чтобы установить контроллер в виде недвижимости статус-бар внешний вид "во вкладке" Информация.файл plist`.

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

Наведите курсор на строку, а затем щелкните знак "плюс", который появляется, чтобы добавить новое свойство в свой .файл plist.

Введите контроллер на основе статус-бар внешний вид в поле ключа, то убедитесь, что в поле тип имеет значениелогическое`. Наконец, введите " нет " в поле Значение.

Чтобы установить глобальный стиль для строки состояния, добавить еще одно свойство на вкладке Инфо с ключом статус бар в стиле, тип String и значение непрозрачный черный стиль.

Здесь's в своем блоге немного более подробно и некоторые примеры кода:

http://codebleep.com/setting-the-status-bar-text-color-in-ios-7/

Комментарии (1)

Не нужно делать каких-то лишних , просто напишите такой код в файле ViewController и сделать статус бар цвет белый

- (UIStatusBarStyle)preferredStatusBarStyle{return UIStatusBarStyleLightContent;}
Комментарии (1)

Ответ для обновлено для Xcode семян ГМ:

  1. В Информация.файл plist положить на основе контроллера вид состояние внешний вид бар как нет

  2. В проекте, установить:

  1. В Метод ViewDidLoad:

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

Комментарии (1)