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


990

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


9
Эта ссылка содержит интересную информацию по этому вопросу: doubleencore.com/2013/09/…
— Адриано Лукас,

Ответы:


1380
  1. Установите UIViewControllerBasedStatusBarAppearanceдля YESв .plist файле.

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

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

    - (UIStatusBarStyle)preferredStatusBarStyle
    { 
        return UIStatusBarStyleLightContent; 
    }

Примечание : это не работает для контроллеров внутри UINavigationController, см . Комментарий Тайсона ниже :)

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<ContentView> {
    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }
}

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

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

в

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

78
Мне не нужен Шаг 2.
— Джейсон Мур

37
Кажется, не работает на iOS 7 Beta 5 с Xcode5-DP5. Предпочитаемый StatusBarStyle не вызывается.
— wilsontgh

18
UIViewControllerBasedStatusBarAppearance изменено на Просмотр внешнего вида строки состояния на основе контроллера в Xcode 5 GM seed
— parilogic

42
Получил ответ для Xcode GM Seed: 1. В Info.plist поместите вид отображения строки состояния на основе контроллера как НЕТ 2. В appDelegate, внутри метода appDidFinishLaunching, поместите [[UIView появление] setTintColor: [UIColor whiteColor]];
— parilogic

101
UINavigationController представляет собой особый случай, выше не будет работать. Просто часами царапал мою голову над этим. См. Здесь для решения: stackoverflow.com/a/19513714/505457
— Тайсон

848

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

  1. Набор View controller-based status bar appearanceдля NOв вашей Info.plist.
  2. Вызов [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

Примечание: этот метод устарел в iOS9. Используйте preferredStatusBarStyleвместо этого на UIViewController. (см. Apple Developer Library )


16
Это гораздо лучший и простой маршрут.
— Мик Бирн

227
Не нужно кодировать. Все это можно сделать из plist: (1) установить «Просмотр внешнего вида строки состояния на основе контроллера» на NO и (2) установить «Стиль строки состояния» на «Непрозрачный черный стиль». (Необработанные значения: UIViewControllerBasedStatusBarAppearance -> NO и UIStatusBarStyle -> UIStatusBarStyleBlackOpaque)
— SwiftArchitect,

3
Обратите внимание, что вы должны установить для соответствующего значения info.plist значение NO, чтобы это работало.
— Абхи Беккерт,

9
@gothicdev: хороший улов. Приму ваш ответ, так как он самый чистый. Легкая опция для стиля бара может быть такой: UIStatusBarStyleLightContent
— benka

9
Этот метод устарел в iOS 9.
— lostAtSeaJoshua

439

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

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

  • Стиль строки состояния: Transparent black style (alpha of 0.5)
  • Просмотр внешнего вида строки состояния на основе контроллера: NO
  • Строка состояния изначально скрыта: NO

12
Я не знаю, изменились ли вещи, но значение UIStatusBarStyleLightContent не распознается XCode и не встречается ни в одной документации ... Хотя, похоже, работает.
— Натан Х

5
Этот также изменил его на заставке, в то время как просто установить его в навигаторе не будет ... Слава!
— viniciusnz

3
Определенно, самый простой способ сделать это и, как уже упоминалось, также работает на заставке.
— чудес

4
В HOWEVER нет ничего, UIStatusBarStyleLightContentчто plist infoвызывало бы Transparent Blackтот же трюк :) плюс, вам нужно добавить View controller-based status bar appearanceего, поскольку его там нет изначально, и это все, что вам нужно, чтобы заставить его работать :)
— user1949873

45
Для ленивых людей, как я, скопируйте и уйдите: <key>UIStatusBarStyle</key> <string>UIStatusBarStyleLightContent</string> <key>UIViewControllerBasedStatusBarAppearance</key> <false/>
— Адам Уэйт

241

Примечание. Ответ с наибольшим количеством голосов не работает для iOS 7/8.

В Info.plist установите «Просмотр внешнего вида строки состояния на основе контроллера» как НЕТ

В AppDelegate добавить

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

в

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

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


10
Устаревший в iOS 9.: - /
— sudo make install

112

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

Введите описание изображения здесь


3
В устройстве у меня не работал ни один из ответов выше, кроме этого. Я думаю, что это говорит все о новой системе, что вы должны установить навигационную панель в ЧЕРНОЕ, чтобы иметь статусную строку текста БЕЛЫЙ.
— MrTJ

2
После того, как мы много чего пережили, это то, что в итоге получилось. Стиль был установлен по умолчанию. Изменил это и удалил все другие взломы строки состояния, и это работает.
— Гуджамин

1
Если вы не хотите устанавливать все свои навигационные панели в IB, вы также можете установить его внешний прокси. [[UINavigationBar Внешний вид] setBarStyle: UIBarStyleBlack];
— Стив Мозер

3
У меня не работает в iOS7 Раскадровка. Похоже, это может быть побочный эффект или что-то еще?
— Крис

Я хотел бы подтвердить, что все вышеперечисленные ответы не сработали и для меня. После изображения текст строки состояния выглядит белым. Но я повторяю еще раз, вышеупомянутые ОТВЕТЫ с Xcode 6.2 и iOS 8.2 не работают.
— Маркус

98

Ничто из этого не сработало для меня, так что вот рабочее решение ...

В Info.plistдобавьте строку:

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

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

[application setStatusBarHidden:NO];
[application setStatusBarStyle:UIStatusBarStyleLightContent];

Это решение работало для меня, в то время как вышеприведенные - нет.
— Джон Контарино

Удивительно, но этот UIViewControllerBasedStatusBarAppearance конвертируется в то же самое: автоматически
— просматривать

63

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

Вам необходимо добавить ключ «Просмотр внешнего вида строки состояния на основе контроллера» в info.plist следующим образом: введите описание изображения здесь

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

введите описание изображения здесь

Это оно.


1
Мне понравился твой подход! В моем случае я пытался понять, как сделать так, чтобы стиль строки состояния был светлым, только когда он полноэкранный (без панели навигации). Затем я понял, что все остальные экраны должны соответствовать тому же стилю освещения. Таким образом, хорошее решение состоит в том, чтобы установить для всего этого. Спасибо! (:
— Игорь де Лоренци

Если вам не нужно менять это когда приложение работает. Это лучший подход.
— Майкл

Этот подход определенно работает, но он вводит странную проблему на iPad. Если ваше приложение поддерживает глубокие ссылки, и когда вы запускаете приложение через deeplink, обратная ссылка, появляющаяся в строке состояния, исчезает.
— Читраншу Астана

Лучший и самый простой.
— Амит Кумар

лучшее решение для меня: D
— Золотая курица

48

Всего два шага, как показано ниже:

Шаг 1:

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

UIViewControllerBasedStatusBarAppearanceустановить значение NO.

Шаг 2:

В проекте AppDelegate.m:

- (BOOL)application:(UIApplication *)application 
        didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
    …
    [application setStatusBarStyle:UIStatusBarStyleLightContent];
    …
}

4
Мне нравится этот ответ, поскольку я впервые использую параметр "application"))
— MUH Mobile Inc.

Точечная запись и это было бы идеально;)
— Rivera

43

Это работает в Golden Master iOS 7 и Xcode 5 GM seed и iOS7 SDK, выпущенных 18 сентября 2013 года (по крайней мере, со скрытым навигационным контроллером):

  1. Установите the UIViewControllerBasedStatusBarAppearanceна NOв Info.plist.

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


1
UIViewControllerBasedStatusBarAppearance значения по умолчанию, кажется, ДА. "Приложения по умолчанию используют новую систему управления строкой состояния на основе контроллера представления. Чтобы отказаться от этого, добавьте значение NO для ключа UIViewControllerBasedStatusBarAppearance в свой Info.plist." [ bgr.com/2013/09/10/ios-7-gm-change-log-release-notes/]
— Жолт

1
Ya !! После установки значения UIViewControllerBasedStatusBarAppearance в NO строка состояния скрывается в представлениях.
— CashLee 李秉骏

это должно применяться ко всем viewdidload?
— Арнли Вискайно

Вы можете добавить его только в методе appDelegates didFinishLoading. Или в первом представлении метода viewDidLoad, если вы не хотите, чтобы он изменился.
— Денис Федотов

1
фантастически, этот сделал свою работу. простое и отличное кодирование.
— Фелипе

32

Если ваш UIViewController находится внутри UINavigationController, вам нужно установить BarStyle:

-[UINavigationBar setBarStyle:UIBarStyleBlack]

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

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


Нет, это просто делает цвет панели навигации таким же, как цвет текста в строке состояния. Это скрывает проблему, а не исправляет ее!
— wpearse

2
В iOS7 строка состояния будет имитировать UINavigationBar, если представление содержит UINavigationController, поэтому во многих случаях это правильный ответ.
— Джонстафф

29

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

-(UIStatusBarStyle)preferredStatusBarStyle{ 
    return UIStatusBarStyleLightContent; 
} 

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


Это было единственное решение, которое работало для меня в приложении без раскадровок и без XIB. Должно быть полезно и для пользователей, не являющихся членами IB.
— Джонни Спаркс

2
Это было идеально для меня, когда мне нужно было установить стиль по-разному в каждом контроллере представления
— Бен

Если вы хотите сохранить для параметра «Просмотр внешнего вида строки состояния на основе контроллера» значение «Да», этот способ можно использовать. Спасибо!
— cloudsurfin

28

Я использую Xcode 6 beta 5 в проекте Swift для приложения iOS 7.

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

info.plist:

Введите описание изображения здесь


2
Спасибо, похоже, только ваше решение работает с последней версией IOS7
— Maman

Это решение показывает строку состояния при загрузке приложения на экране запуска.
— Хуан Боэро

Решил мои проблемы в xCode 7.1. Последняя версия. Apple забыла пару важных вещей, чтобы заставить что-то работать. Снова.
— Майкл

22

В AppDelegate.m добавьте следующее.

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

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

} 

А в файле Plist установите для параметра «Просмотр внешнего вида строки состояния на основе контроллера» значение NO.


20

Просто в приложении

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

5
Единственный ответ, который действительно работал для меня.
— Вим Хаанстра

6
Но для этого нам нужно отказаться от просмотра строки состояния на основе контроллера .
— iamyogish

Устаревший в iOS9
— Димитрис

20

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

Перейти к вашему приложению info.plist.

  1. Установите View controller-based status bar appearanceнаNO
  2. Установите Status bar styleнаUIStatusBarStyleLightContent

Затем перейдите к делегату вашего приложения и вставьте следующий код, где вы устанавливаете 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];
}

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


1
я думаю, что это правильный ответ (часть списка вопросов) ... зачем мне добавлять статический код на didfinishlaunchingwithoptions ... Если вам нужен один и тот же цвет для всего приложения, это правильный путь
— user2387149

20
  1. Перейти к Project-> Target,

  2. Затем установите Status Bar Styleна Light. Строка состояния становится белой на экране запуска. Настройка проекта

  3. Затем установите View controller-based status bar appearanceравным NOв Info.plist.


2
Вторая часть , где вы установили фактический View controller-based status bar appearance equalTo NOбыл кусок я пропускал. Спасибо
— Уилл

18

Изменение в информации PLIST В Swift 3 это очень просто, всего за 2 шага. Перейдите в ваш info.plist и измените ключ View controller-based status bar appearanceна «НЕТ». Затем в 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
 }

1
Это просто здорово, братан :) Спасибо.
— Нареш Редди М

в iOS 9 это делать не рекомендуется, это следует делать с помощью переопределения rootviewcontroller var предпочитаемое_статус_BarStyle: UIStatusBarStyle {возвращение .lightContent}
— Джеймс Рочабрун

17

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

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

Настройка внешнего вида строки состояния глобально - это двухэтапный процесс.

Во-первых, вам нужно сказать iOS, что вы не хотите устанавливать внешний вид строки состояния для каждого отдельного просмотра.

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

Чтобы отключить контроль строки состояния просмотра за просмотром, вам нужно установить View controller-based status bar appearanceсвойство в Info.plist.

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

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

Введите View controller-based status bar appearanceв поле «Ключ», затем убедитесь, что в поле «Тип» установлено значение Boolean. Наконец, введите NOв поле Значение.

Чтобы установить глобальный стиль для строки состояния, добавьте еще одно свойство на вкладке «Информация» с ключом Status bar style, типом Stringи значением Opaque black style.

Вот сообщение в блоге с более подробной информацией и примером кода:

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


Спасибо. Моя проблема заключалась в том, что я не видел, чтобы для типа "Просмотр внешнего вида строки состояния на основе контроллера" было задано значение String. Редактирование файла .plist «вручную» и добавление логического значения прояснили ситуацию.
— Крис Принц

12

Не нужно делать ничего лишнего, просто напишите этот код в вашем viewController и получите строку состояния белого цвета.

- (UIStatusBarStyle)preferredStatusBarStyle{return UIStatusBarStyleLightContent;}

Поместите это в ViewController.m после реализации. Это самый простой и отлично работает! Спасибо, Мохит!
— Фил Малкинс

12

Обновлен ответ для Xcode GM Seed:

  1. В Info.plistположить View controller-based status bar appearanceвNO

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

    Введите описание изображения здесь

  3. В ViewDidLoad:

    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];


Это изменило панель вкладок, а не строку состояния для меня.
— Кит

11

Я думаю, что все ответы на самом деле не указывают на проблему, потому что все они работают в определенных сценариях. Но если вам нужно охватить все случаи, следуйте пунктам ниже:

В зависимости от того, где вам нужен стиль освещения в строке состояния, вы всегда должны иметь в виду следующие 3 момента:

1) Если вам нужна строка состояния на экране запуска или в других местах, где вы не можете ее контролировать (не в контроллерах представления, а в некоторых управляемых системой элементах / моментах, таких как Launch Screen), вы переходите к настройкам своего проекта Настройки проекта

2) если у вас есть контроллер внутри контроллера навигации, вы можете изменить его в конструкторе интерфейса следующим образом:

а) Выберите панель навигации вашего контроллера навигации Выберите панель навигации вашего контроллера навигации

б) Затем установите стиль панели навигации на «Черный», потому что это означает, что у вас будет «черный» -> темный фон под строкой состояния, поэтому он установит для строки состояния белый цвет.

введите описание изображения здесь

Или сделать это в коде следующим образом

navigationController?.navigationBar.barStyle = UIBarStyle.Black

3) Если у вас есть только один контроллер, который должен иметь свой собственный стиль строки состояния, и он не встроен в какую-либо структуру контейнера как UINavigationController

Установите стиль строки состояния в коде для контроллера:

Установка стиля строки состояния в коде


пожалуйста, объясните ваш случай, и я постараюсь помочь
— Fawkes

1
Я должен был добавить StatusBarIsIntiallyHidden = NO к списку, а также ViewControllerBasedApplicationStatusBarAppearnce = NO к списку. Тогда это работает, используя первую часть
— Майкл

Был ли у вас экран-заставка с тем же «изображением», что и у первого контроллера представления загрузки? А также, в разделе «Информация» вашей цели вы можете попробовать установить «Скрыть строку состояния» в false и избежать работы с вашим .plist. Флаг «StatusBarIsIntiallyHidden»
— Fawkes

Я не буду. Он использует сгенерированный по умолчанию XIB.
— Майкл

Я действительно обнаружил эту проблему при создании нового проекта в xCode 7.1, поэтому я подумал, что это так странно
— Майкл

10

Просто звоню

[[UINavigationBar appearance] setBarStyle:UIBarStyleBlack];

в

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

Метод моих AppDelegateработ отлично подходит для меня в iOS7.


Ничего себе, много дерьма здесь, но этот ответ работал для меня. Я использую Xcode 6 и iOS 8 SDK
— Итан Паркер

1
Отлично, у меня работает в iOS 9 сView controller-based status bar appearance = NO
— dstudeba

9

Это задокументировано в Руководстве по переходу пользовательского интерфейса iOS 7 , к которому вам нужен идентификатор разработчика Apple для прямого доступа. Соответствующая выдержка:

Поскольку строка состояния прозрачна, вид позади нее просвечивает. [...] Используйте UIStatusBarStyleконстанту, чтобы указать, должно ли содержимое строки состояния быть темным или светлым:

UIStatusBarStyleDefaultотображает темный контент. [...]

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

Также возможно представляет интерес:

В iOS 7 вы можете управлять стилем строки состояния с отдельного контроллера vew и изменять его во время работы приложения. Чтобы включить это поведение, добавьте UIViewControllerBasedStatusBarAppearanceключ в Info.plistфайл приложения и присвойте ему значение YES.

Я определенно рекомендую ознакомиться с документом, к которому, опять же, вы можете получить доступ с помощью своего идентификатора разработчика Apple.


3
Я уже пробовал [приложение setStatusBarStyle: UIStatusBarStyleLightContent]; но на самом деле ничего не меняется, цвет текста по-прежнему черный
— Александр Веремчук

Я бы хотел помочь, но, как я уже сказал, я недостаточно знаком с процессом разработки iOS, чтобы знать, что предложить. Сожалею!
— Аарон Миллер

1) установить для UIViewControllerBasedStatusBarAppearance значение YES в plist; 2) в viewDidLoad сделать [self setNeedsStatusBarAppearanceUpdate]; 3) добавьте следующий метод :-( UIStatusBarStyle) prefeStatusBarStyle {return UIStatusBarStyleLightContent; }
— Питер Б. Крамер

9

Вот Apple Guidelines / Инструкция по изменению строки состояния. Только темные и светлые (в то время как и черные) разрешены в строке состояния.

Вот как изменить стиль строки состояния:

Если вы хотите , чтобы стиль набора статуса бара, уровень приложений , а затем установить UIViewControllerBasedStatusBarAppearanceв NOвашей .plist»файла`.

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

  1. Установите UIViewControllerBasedStatusBarAppearanceзначение YESв .plistфайле, если вам нужно установить стиль строки состояния только на уровне UIViewController.
  2. В viewDidLoad добавить функцию - setNeedsStatusBarAppearanceUpdate

  3. переопределите предпочитаемый элемент StatusBarStyle в вашем контроллере представления.

-

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

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

Установите значение .plist в соответствии с уровнем настройки стиля строки состояния. введите описание изображения здесь


Вот несколько хитростей, чтобы изменить / установить цвет фона для строки состояния во время запуска приложения или во время viewDidLoad вашего контроллера представления.

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
    }

}



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

введите описание изображения здесь


8

Я сделал некоторые вещи по-другому, и это работает для меня.

Без изменений в коде я настроил свой файл .plist следующим образом:

  • Просмотреть внешний вид строки состояния на основе контроллера> НЕТ
  • Стиль строки состояния> UIStatusBarStyleLightContent (простая строка)

Я надеюсь, что это помогает.

редактировать

Для каждого контроллера представления я изменяю свойство Simulated Metrics "строки состояния" в раскадровке с "выведенного" на "Легкое содержимое"


8

Если вы хотите получить тот же результат со Swift, вы можете использовать этот код в файле AppDelegate.swift:

UINavigationBar.appearance().barStyle = .BlackTranslucent

И текст вашей строки состояния будет белым :-)!


8

Если вы все еще хотите использовать View controller-based status bar appearanceв файле info.plist значение YES, что означает, что вы можете изменять строку состояния для каждого контроллера представления, используйте следующее для белого текста в строке состояния в ViewDidLoad:

[[[self navigationController] navigationBar] setBarStyle:UIBarStyleBlackTranslucent];

Панель навигации! = Строка состояния.
— Майкл Петерсон

... Вы пробовали это? (И да, для строки состояния)
— eirik

7

В Plist добавьте это:

  • Стиль строки состояния: UIStatusBarStyleLightContent
  • Просмотр внешнего вида строки состояния на основе контроллера: NO

7

в info.plist установите значение поля NO. Просмотрите внешний вид строки состояния на основе контроллера и установите индикатор стиля строки состояния в target> general setting.


2
победитель победитель куриный ужин
— Tommybananas

7

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

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

Во-вторых, вы не найдете свойство UIViewControllerBasedStatusBarAppearance в вашем списке, но по умолчанию его там нет. Вы должны добавить его самостоятельно, нажав на кнопку +, а затем установите его на NO.

Цвет текста в строке состояния ios 7

Наконец, вам нужно перейти в файл AppDelegate.m и добавить следующее в метод didFinishLaunchingWithOptions, добавив следующую строку:

     [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

Это изменит цвет на белый для всех ваших контроллеров представления. Надеюсь это поможет!


Этот метод устарел в iOS 9
— Trung Bui
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.