Изменение цвета текста строки состояния в заставке iOS 7

Я знаю, что уже есть некоторые qaru.site/info/21579/... questions, которые говорят, как изменить статус бар для всех контроллеров. В настоящее время я изменяю цвет строки состояния следующим образом:

if(IS_IOS7)
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

В application:DidFinishLaunching

Кроме того, я изменил значение UIViewControllerBasedStatusBarAppearance в plist на NO. Тем не менее, на всплывающем экране он по-прежнему показывает текст строки состояния с черным цветом.

Можно ли изменить цвет текста строки состояния в заставке?

Ответ 1

В файле plist проекта добавьте свойство "Стиль строки состояния" (клавиша UIStatusBarStyle). Затем игнорируйте все возможные значения, перечисленные в раскрывающемся списке для этого свойства, и введите UIStatusBarStyleLightContent вместо этого.

И вам не нужно устанавливать UIViewControllerBasedStatusBarAppearance в NO в вашем plist, вы можете установить preferredStatusBarStyle, который вы хотите, на ваши контроллеры просмотров.

Ответ 2

Вы можете сделать это без написания какой-либо строки кода
Сделайте следующее, чтобы цвет текста в строке состояния был белым по всему приложению.

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

  • Стиль строки состояния: UIStatusBarStyleLightContent
  • Просмотр состояния строки состояния на основе контроллера: NO
  • Строка состояния изначально скрыта: NO

Ответ 3

Вы можете выполнить следующие действия для получения строки состояния состояния света во всем приложении.

  • Выберите название проекта в навигаторе проекта.
  • Выберите имя цели из списка в левом столбце редактора проекта.
  • Нажмите "Общие" в верхней части редактора проекта.
  • Установить стиль строки состояния → Свет

В вашем файле plist добавьте следующие значения:

  • Стиль строки состояния - UIStatusBarStyleLightContent
  • Просмотр состояния строки состояния контроллера - NO

Это поможет вам получить строку состояния в белом цвете во всем приложении, включая SPLASH SCREEN.

Ответ 4

Установите UIViewControllerBasedStatusBarAppearance на Нет в plist

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

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {

   [application setStatusBarStyle:UIStatusBarStyleLightContent];

    self.window.clipsToBounds =YES;

    self.window.frame =  CGRectMake(0,20,self.window.frame.size.width,self.window.frame.size.height-20);
}

Пожалуйста, следуйте этому коду, который сработал у меня

Ответ 5

Вы можете выполнить следующие действия для получения строки состояния состояния света во всем приложении.

Выберите название проекта в навигаторе проекта. Выберите имя цели из списка в левом столбце редактора проекта. Нажмите "Общие" в верхней части редактора проекта. Установить стиль строки состояния → светлый

Ответ 6

Вот Руководство Apple/Инструкция о изменении строки состояния.

Здесь - Как изменить стиль строки состояния:

Если вы хотите установить стиль строки состояния, уровень приложения затем установите UIViewControllerBasedStatusBarAppearance в NO в файле `.plist '.

если вы хотите установить стиль строки состояния, на уровне контроллера уровня, выполните следующие действия:

  • Установите UIViewControllerBasedStatusBarAppearance в YES в файле .plist, если вам нужно установить стиль строки состояния только на уровне UIViewController.
  • В функции addDidLoad add - setNeedsStatusBarAppearanceUpdate

  • переопределить привилегированныйStatusBarStyle в вашем контроллере представления.

-

override func viewDidLoad() {
    super.viewDidLoad()
    self.setNeedsStatusBarAppearanceUpdate()
}

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

Задайте значение .plist в соответствии с уровнем настройки стиля строки состояния. enter image description here


Вы можете установить цвет фона для строки состояния во время запуска приложения или во время просмотраDidLoad вашего контроллера вида.

extension UIApplication {

    var statusBarView: UIView? {
        return value(forKey: "statusBar") as? UIView
    }

}

// Set upon application launch, if you've application based status bar
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

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


or 
// Set it from your view controller if you've view controller based statusbar
class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
    }

}



Вот результат:

enter image description here