Як змінити колір тексту рядка стану в iOS


990

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


9
На цьому посиланні є цікава інформація щодо цього питання: doubleencore.com/2013/09/…
Адріано Лукас

Відповіді:


1380
  1. Встановіть UIViewControllerBasedStatusBarAppearanceдля YESв .plist файлі.

  2. У viewDidLoadвиконанні a[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 створіть новий швидкий файл під назвою 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
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 )


16
Це набагато кращий і простіший маршрут.
Мік Бірн

227
Не потрібно кодувати. Все це можна зробити із списку: (1) встановити "Перегляд зовнішнього вигляду рядка стану на основі контролера" на "НІ" та (2) встановити "Стиль рядка стану" на "Непрозорий чорний стиль". (Сировинні значення - UIViewControllerBasedStatusBarAppearance -> NO та UIStatusBarStyle -> UIStatusBarStyleBlackOpaque)
SwiftArchitect

3
Зауважте, що для цього потрібно встановити відповідне значення info.plist на НІ.
Абхі Беккерт

9
@gothicdev: приємний улов. Прийняв би вашу відповідь, оскільки вона найчистіша. Світлий варіант для стилю Bar може бути: UIStatusBarStyleLightContent
benka

9
Цей метод був застарілий у iOS 9.
lostAtSeaJoshua

439

Це можна зробити, не записуючи жодного рядка коду!
Виконайте наступне, щоб зробити текст рядка стану кольором білим у всьому додатку

На вашому проекті пліст- файл:

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

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

5
Цей також змінив його на екрані заставки, тоді як просто встановити його на навігаторі не було б ... Кудо!
viniciusnz

3
Безумовно, найпростіший спосіб зробити це, як уже згадувалося, працює на екрані заставки.
дивів

4
Існує немає нічого називають 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 встановити

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 перетворюється на те саме: Перегляд зовнішньої панелі стану на основі контролера Автоматично :)
Abhishek Thapliyal

63

Для цього вам не потрібно робити жодного коду

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

& встановіть для його типу значення булеве значення, а значення - НІ. Потім натисніть на налаштування проекту, потім натисніть на вкладці Загальні та в розділі Інформація про розгортання встановіть бажаний стиль рядка стану на.

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

Це воно.


1
Мені сподобався ваш підхід! У моєму випадку я намагався зрозуміти, як зробити стиль рядка стану легким лише тоді, коли він є повноекранним (без панелі навігації). Потім я зрозумів, що всі інші екрани повинні відповідати тому ж світлому стилю. Тож хорошим рішенням є встановити всю справу. Дякую! (:
Ігор де Лоренці

Якщо вам не потрібно цього змінювати під час роботи програми. Це найкращий підхід.
Майкл

Цей підхід, безумовно, працює, але він вносить дивну проблему на iPad. У разі, якщо ваша програма підтримує посилання, і коли ви запускаєте програму через посилання, зворотне посилання, що з’являється на панелі стану, зникає.
Читраншу Астхана

Найкращий і найпростіший.
Аміт Кумар

найкраще рішення для мене: D
Золота курка

48

Всього два етапи:

Крок 1:

На вкладці Інформація в розділі project targetДодати рядок:

UIViewControllerBasedStatusBarAppearance, встановлене значення NO .

Крок 2:

У проекті AppDelegate.m:

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

4
Мені подобається ця відповідь, оскільки я вперше використовую параметр "програми")
MUH Mobile Inc.

Позначення крапок, і це було б ідеально;)
Rivera

43

Це працює в Golden Master iOS 7 та Xcode 5 GM насінні та 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/]
Zsolt

1
Ya !! Після встановлення UIViewControllerBasedStatusBarAppearance to NO, рядок стану ховається у поданнях.
CashLee 李秉骏

чи слід це застосовувати до всіх viewdidload?
Арнлі Візкайно

Ви можете додати його просто в appDelegates didFinishLoading метод. Або на перших поглядах метод viewDidLoad, якщо ви не хочете, щоб він змінився.
Деніс Федотов

1
фантастично, цей зробив роботу. просте і чудове кодування.
Феліпе

32

Якщо ваш UIViewController знаходиться всередині UINavigationController, вам доведеться встановити BarStyle:

-[UINavigationBar setBarStyle:UIBarStyleBlack]

Оригінальний відповідь тут

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


Ні, це просто робить колір рядка навігації таким же, як і колір тексту рядка стану. Це приховує проблему, а не виправляє її!
розігратися

2
У iOS7 рядок стану імітуватиме UINavigationBar, якщо представлення містить UINavigationController, тому у багатьох випадках це правильна відповідь.
Jonstaff

29

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

-(UIStatusBarStyle)preferredStatusBarStyle{ 
    return UIStatusBarStyleLightContent; 
} 

Це має бути все, що вам потрібно.


Це єдине рішення, яке працювало для мене у програмі, що не використовує розкадровки, не підтримує xib. Має бути корисним і для користувачів, які не є IB.
Джонні Спаркс

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

Якщо ви хочете зберегти "Перегляд вигляду рядка стану на основі контролера", встановлений на "Так", це шлях. Дякую!
cloudsurfin

28

Я використовую Xcode 6 beta 5 для проекту Swift , для програми iOS 7.

Ось що я зробив, і це працює:

info.plist:

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


2
Дякую, це схоже лише на ваше рішення, що працює з останньою версією IOS7
Maman

Це рішення показує рядок стану під час завантаження програми на екрані запуску.
Juan Boero

Вирішено мої проблеми в xCode 7.1. Остання версія. Apple забула пару найважливіших творів, щоб щось спрацювало. Знову.
Майкл

22

У AppDelegate.m додайте наступне.

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

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

} 

А у файлі Plist встановіть "Перегляд зовнішнього вигляду на основі контролера" на "НІ".


20

Просто в Appdelegate

[[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 вашого Windows.

#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 кроків. Перейдіть до свого інформаційного списку та змініть ключ 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
Це просто приголомшливий брато :) Дякую.
Naresh Reddy M

якщо це було застаріло в iOS 9, слід це зробити на кореневому перегляді кореневого контролера var preferenceStatusBarStyle: UIStatusBarStyle {return .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у поле Key і переконайтесь, що для поля Type встановлено 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) Якщо вам потрібна панель стану на екрані запуску або в інших місцях, де ви не можете керувати нею (не в режимі перегляду контролерів, а в деяких елементах, керованих системою / моментами, наприклад, запуск екрану). Ви переходите до налаштувань проекту Налаштування проекту

2) якщо у вас є контролер всередині навігаційного контролера. Ви можете змінити його в конструкторі інтерфейсів таким чином:

a) Виберіть панель навігації вашого навігаційного контролера Виберіть панель навігації вашого контролера навігації

b) Потім встановіть стиль панелі навігації на "Чорний", тому що це означає, що у вас буде "чорний" -> темний фон під вашим рядком статусу, тому він встановить білий рядок стану білим

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

Або зробіть це в коді наступним чином

navigationController?.navigationBar.barStyle = UIBarStyle.Black

3) Якщо у вас один контролер, який повинен мати свій власний стиль рядка стану, і він не вбудований в деяку структуру контейнера як UINavigationController

Встановіть стиль рядка стану в коді для контролера:

Встановлення стилю рядка стану в коді


поясніть, будь ласка, свій випадок, і я спробую допомогти
Фокс

1
Мені довелося додати до списку StatusBarIsIntiallyHidden = NO, а також ViewControllerBasedApplicationStatusBarAppearnce = НІ до списку. Потім це працює, використовуючи частину першу
Майкл

Чи був у вас бризок екрану, який має те саме "зображення", що і перший контролер перегляду завантаження? А також у розділі "Інформація" своєї цілі ви можете спробувати встановити "Приховати рядок стану" на помилковому та уникнути спілкування зі своїм .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
Ethan Parker

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 у списку 2) у viewDidLoad зробіть [self setNeedsStatusBarAppearanceUpdate]; 3) додати наступний метод :-( UIStatusBarStyle) preferenceStatusBarStyle {return UIStatusBarStyleLightContent; }
Пітер Б. Крамер

9

Ось рекомендації Apple / Інструкція щодо зміни рядка стану. У рядку стану дозволено лише темне та світле (в той час як чорне).

Ось - Як змінити стиль рядка стану:

Якщо ви хочете , щоб стиль набору статусу бару, рівень додатків , а потім встановити UIViewControllerBasedStatusBarAppearanceв NOвашій .plist »файла`.

якщо ви хочете встановити стиль рядка стану, на рівні контролера перегляду виконайте наступні дії:

  1. Встановіть UIViewControllerBasedStatusBarAppearanceв YESв .plistфайлі, якщо вам необхідно встановити стиль статус бар тільки на рівні UIViewController.
  2. У функції viewDidLoad add - 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 (простий рядок)

Я сподіваюся, що це допомагає.

редагувати

Для кожного контролера перегляду я змінюю властивість імітованої метрики "рядок стану" в дошці розкадровки з "висновку" на "світлий вміст"


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

У списку додайте це:

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

7

у info.plist встановіть значення поля НІ Перегляд зовнішнього вигляду рядка стану на основі контролера та встановіть світло в стилі панелі стану в цільовому> загальному налаштуваннях.


2
курячий вечеря переможець
tommybananas

7

Дозвольте дати повну відповідь на ваше запитання. Змінити колір тексту рядка стану дуже просто, але це трохи заплутано в iOS 7, спеціально для новачків.

Якщо ви намагаєтесь змінити колір із чорного на білий у дошці сповіщень, вибравши контролер перегляду та перейшовши на імітацію метрики праворуч, це не спрацює, і я не знаю чому. Він повинен працювати, змінюючи так, але будь-яким чином.

По-друге, ви не знайдете властивість UIViewControllerBasedStatusBarAppearance у своєму списку, але за замовчуванням його немає. Ви повинні додати його самостійно, натиснувши кнопку +, а потім встановити її на НІ.

Колір тексту рядка стану ios 7

Нарешті, вам потрібно перейти у файл AppDelegate.m і додати наступне у методі didFinishLaunchingWithOptions, додати такий рядок:

     [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

Це змінить колір на білий для всіх контролерів перегляду. Сподіваюся, це допомагає!


Цей метод застарілий на iOS 9
Trung Bui
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.