У моего приложения темный фон, но в iOS 7 строка состояния стала прозрачной. Так что я ничего не вижу там, только зеленый индикатор батареи в углу. Как изменить цвет текста строки состояния на белый, как на домашнем экране?
Примечание : это не работает для контроллеров внутри UINavigationController, см . Комментарий Тайсона ниже :)
Swift 3 - это будет работать внутри контроллеров UINavigationController. Добавьте этот код в свой контроллер.
// Preferred status bar style lightContent to use on dark background.
// Swift 3
overridevar preferredStatusBarStyle:UIStatusBarStyle{return.lightContent
}
Swift 5 и SwiftUI
Для SwiftUI создайте новый файл swift с именем HostingController.swift
Кажется, не работает на 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
Кроме того, вы можете отказаться от внешнего вида строки состояния на основе контроллера представления:
Набор View controller-based status bar appearanceдля NOв вашей Info.plist.
Не нужно кодировать. Все это можно сделать из 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
Я не знаю, изменились ли вещи, но значение 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 установите «Просмотр внешнего вида строки состояния на основе контроллера» как НЕТ
Для меня ничего не произошло с использованием всех вещей в других ответах (и из других источников / документации). Что помогло, так это установило стиль панели навигации на «черный» в XIB. Это изменило текст на белый без какого-либо кода вообще.
В устройстве у меня не работал ни один из ответов выше, кроме этого. Я думаю, что это говорит все о новой системе, что вы должны установить навигационную панель в ЧЕРНОЕ, чтобы иметь статусную строку текста БЕЛЫЙ.
MrTJ
2
После того, как мы много чего пережили, это то, что в итоге получилось. Стиль был установлен по умолчанию. Изменил это и удалил все другие взломы строки состояния, и это работает.
Гуджамин
1
Если вы не хотите устанавливать все свои навигационные панели в IB, вы также можете установить его внешний прокси. [[UINavigationBar Внешний вид] setBarStyle: UIBarStyleBlack];
Стив Мозер
3
У меня не работает в iOS7 Раскадровка. Похоже, это может быть побочный эффект или что-то еще?
Крис
Я хотел бы подтвердить, что все вышеперечисленные ответы не сработали и для меня. После изображения текст строки состояния выглядит белым. Но я повторяю еще раз, вышеупомянутые ОТВЕТЫ с Xcode 6.2 и iOS 8.2 не работают.
Маркус
98
Ничто из этого не сработало для меня, так что вот рабочее решение ...
В Info.plistдобавьте строку:
UIViewControllerBasedStatusBarAppearanceи установите значение NO.
Затем в AppDelegate в didFinishLaunchingWithOptions, добавьте эти строки:
Это решение работало для меня, в то время как вышеприведенные - нет.
Джон Контарино
Удивительно, но этот UIViewControllerBasedStatusBarAppearance конвертируется в то же самое: автоматически
просматривать
63
Вам не нужно делать код для этого
Вам необходимо добавить ключ «Просмотр внешнего вида строки состояния на основе контроллера» в info.plist следующим образом:
& установить его тип значения на Boolean и значение на NO. Затем нажмите на настройки проекта, затем нажмите вкладку «Общие» и в разделе «Информация о развертывании» установите предпочтительный стиль строки состояния .Light следующим образом:
Мне понравился твой подход! В моем случае я пытался понять, как сделать так, чтобы стиль строки состояния был светлым, только когда он полноэкранный (без панели навигации). Затем я понял, что все остальные экраны должны соответствовать тому же стилю освещения. Таким образом, хорошее решение состоит в том, чтобы установить для всего этого. Спасибо! (:
Игорь де Лоренци
Если вам не нужно менять это когда приложение работает. Это лучший подход.
Майкл
Этот подход определенно работает, но он вводит странную проблему на iPad. Если ваше приложение поддерживает глубокие ссылки, и когда вы запускаете приложение через deeplink, обратная ссылка, появляющаяся в строке состояния, исчезает.
Читраншу Астана
Лучший и самый простой.
Амит Кумар
лучшее решение для меня: D
Золотая курица
48
Всего два шага, как показано ниже:
Шаг 1:
На вкладке Информация project target, Добавить строку:
UIViewControllerBasedStatusBarAppearanceустановить значение NO.
Мне нравится этот ответ, поскольку я впервые использую параметр "application"))
MUH Mobile Inc.
Точечная запись и это было бы идеально;)
Rivera
43
Это работает в Golden Master iOS 7 и Xcode 5 GM seed и iOS7 SDK, выпущенных 18 сентября 2013 года (по крайней мере, со скрытым навигационным контроллером):
Установите the UIViewControllerBasedStatusBarAppearanceна NOв
Info.plist.
В ViewDidLoadметоде или в любом месте, где вы хотите изменить стиль строки состояния:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
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:
Нет, это просто делает цвет панели навигации таким же, как цвет текста в строке состояния. Это скрывает проблему, а не исправляет ее!
wpearse
2
В iOS7 строка состояния будет имитировать UINavigationBar, если представление содержит UINavigationController, поэтому во многих случаях это правильный ответ.
Джонстафф
29
Если у вас есть встроенный контроллер навигации, созданный с помощью Interface Builder , обязательно установите следующее в классе, который управляет вашим контроллером навигации:
Это было единственное решение, которое работало для меня в приложении без раскадровок и без XIB. Должно быть полезно и для пользователей, не являющихся членами IB.
Джонни Спаркс
2
Это было идеально для меня, когда мне нужно было установить стиль по-разному в каждом контроллере представления
Бен
Если вы хотите сохранить для параметра «Просмотр внешнего вида строки состояния на основе контроллера» значение «Да», этот способ можно использовать. Спасибо!
cloudsurfin
28
Я использую Xcode 6 beta 5 в проекте Swift для приложения iOS 7.
я думаю, что это правильный ответ (часть списка вопросов) ... зачем мне добавлять статический код на didfinishlaunchingwithoptions ... Если вам нужен один и тот же цвет для всего приложения, это правильный путь
user2387149
20
Перейти к Project-> Target,
Затем установите Status Bar Styleна Light. Строка состояния становится белой на экране запуска.
Затем установите View controller-based status bar appearanceравным NOв Info.plist.
Вторая часть , где вы установили фактический View controller-based status bar appearance equalTo NOбыл кусок я пропускал. Спасибо
Уилл
18
В 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
returntrue}
это было объявлено устаревшим в iOS9, теперь вы должны переопределить это свойство в rootviewcontroller
делать это не рекомендуется в iOS 9 следует сделать это на rootviewcontroller
в 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.
Вот сообщение в блоге с более подробной информацией и примером кода:
Спасибо. Моя проблема заключалась в том, что я не видел, чтобы для типа "Просмотр внешнего вида строки состояния на основе контроллера" было задано значение String. Редактирование файла .plist «вручную» и добавление логического значения прояснили ситуацию.
Крис Принц
12
Не нужно делать ничего лишнего, просто напишите этот код в вашем viewController и получите строку состояния белого цвета.
Это изменило панель вкладок, а не строку состояния для меня.
Кит
11
Я думаю, что все ответы на самом деле не указывают на проблему, потому что все они работают в определенных сценариях. Но если вам нужно охватить все случаи, следуйте пунктам ниже:
В зависимости от того, где вам нужен стиль освещения в строке состояния, вы всегда должны иметь в виду следующие 3 момента:
1) Если вам нужна строка состояния на экране запуска или в других местах, где вы не можете ее контролировать (не в контроллерах представления, а в некоторых управляемых системой элементах / моментах, таких как Launch Screen),
вы переходите к настройкам своего проекта
2) если у вас есть контроллер внутри контроллера навигации,
вы можете изменить его в конструкторе интерфейса следующим образом:
б) Затем установите стиль панели навигации на «Черный», потому что это означает, что у вас будет «черный» -> темный фон под строкой состояния, поэтому он установит для строки состояния белый цвет.
3) Если у вас есть только один контроллер, который должен иметь свой собственный стиль строки состояния, и он не встроен в какую-либо структуру контейнера как UINavigationController
Установите стиль строки состояния в коде для контроллера:
пожалуйста, объясните ваш случай, и я постараюсь помочь
Fawkes
1
Я должен был добавить StatusBarIsIntiallyHidden = NO к списку, а также ViewControllerBasedApplicationStatusBarAppearnce = NO к списку. Тогда это работает, используя первую часть
Майкл
Был ли у вас экран-заставка с тем же «изображением», что и у первого контроллера представления загрузки? А также, в разделе «Информация» вашей цели вы можете попробовать установить «Скрыть строку состояния» в false и избежать работы с вашим .plist. Флаг «StatusBarIsIntiallyHidden»
Fawkes
Я не буду. Он использует сгенерированный по умолчанию XIB.
Майкл
Я действительно обнаружил эту проблему при создании нового проекта в xCode 7.1, поэтому я подумал, что это так странно
Поскольку строка состояния прозрачна, вид позади нее просвечивает. [...] Используйте UIStatusBarStyleконстанту, чтобы указать, должно ли содержимое строки состояния быть темным или светлым:
UIStatusBarStyleLightContentотображает содержание света. Используйте, когда темный контент находится за строкой состояния.
Также возможно представляет интерес:
В iOS 7 вы можете управлять стилем строки состояния с отдельного контроллера vew и изменять его во время работы приложения. Чтобы включить это поведение, добавьте UIViewControllerBasedStatusBarAppearanceключ в Info.plistфайл приложения и присвойте ему значение YES.
Я определенно рекомендую ознакомиться с документом, к которому, опять же, вы можете получить доступ с помощью своего идентификатора разработчика Apple.
Я уже пробовал [приложение setStatusBarStyle: UIStatusBarStyleLightContent]; но на самом деле ничего не меняется, цвет текста по-прежнему черный
Александр Веремчук
Я бы хотел помочь, но, как я уже сказал, я недостаточно знаком с процессом разработки iOS, чтобы знать, что предложить. Сожалею!
Аарон Миллер
1) установить для UIViewControllerBasedStatusBarAppearance значение YES в plist; 2) в viewDidLoad сделать [self setNeedsStatusBarAppearanceUpdate]; 3) добавьте следующий метод :-( UIStatusBarStyle) prefeStatusBarStyle {return UIStatusBarStyleLightContent; }
Питер Б. Крамер
9
Вот Apple Guidelines / Инструкция по изменению строки состояния. Только темные и светлые (в то время как и черные) разрешены в строке состояния.
Вот как изменить стиль строки состояния:
Если вы хотите , чтобы стиль набора статуса бара, уровень приложений , а затем установить UIViewControllerBasedStatusBarAppearanceв NOвашей .plist»файла`.
если вы хотите установить стиль строки состояния, на уровне контроллера представления выполните следующие действия:
Установите UIViewControllerBasedStatusBarAppearanceзначение YESв .plistфайле, если вам нужно установить стиль строки состояния только на уровне UIViewController.
В viewDidLoad добавить функцию - setNeedsStatusBarAppearanceUpdate
переопределите предпочитаемый элемент StatusBarStyle в вашем контроллере представления.
Установите значение .plist в соответствии с уровнем настройки стиля строки состояния.
Вот несколько хитростей, чтобы изменить / установить цвет фона для строки состояния во время запуска приложения или во время viewDidLoad вашего контроллера представления.
extensionUIApplication{var statusBarView:UIView?{return value(forKey:"statusBar")as?UIView}}// Set upon application launch, if you've application based status bar
classAppDelegate:UIResponder,UIApplicationDelegate{var window:UIWindow?func application(_ application:UIApplication, didFinishLaunchingWithOptions launchOptions:[UIApplicationLaunchOptionsKey:Any]?)->Bool{UIApplication.shared.statusBarView?.backgroundColor =UIColor.red
returntrue}}
or
// Set it from your view controller if you've view controller based statusbar
classViewController:UIViewController{overridefunc viewDidLoad(){super.viewDidLoad()UIApplication.shared.statusBarView?.backgroundColor =UIColor.red
}}
Если вы все еще хотите использовать View controller-based status bar appearanceв файле info.plist значение YES, что означает, что вы можете изменять строку состояния для каждого контроллера представления, используйте следующее для белого текста в строке состояния в ViewDidLoad:
в info.plist установите значение поля NO. Просмотрите внешний вид строки состояния на основе контроллера и установите индикатор стиля строки состояния в target> general setting.
Позвольте мне дать вам полный ответ на ваш вопрос. Изменить цвет текста в строке состояния очень просто, но в iOS 7 это немного сбивает с толку, особенно для новичков.
Если вы пытаетесь изменить цвет с черного на белый в раскадровке, выбрав контроллер представления и перейдя к симулированным метрикам с правой стороны, это не сработает, и я не знаю почему. Это должно работать, изменяя, как это, но как угодно.
Во-вторых, вы не найдете свойство UIViewControllerBasedStatusBarAppearance в вашем списке, но по умолчанию его там нет. Вы должны добавить его самостоятельно, нажав на кнопку +, а затем установите его на NO.
Цвет текста в строке состояния ios 7
Наконец, вам нужно перейти в файл AppDelegate.m и добавить следующее в метод didFinishLaunchingWithOptions, добавив следующую строку:
Ответы:
Установите
UIViewControllerBasedStatusBarAppearance
дляYES
в .plist файле.В
viewDidLoad
сделать[self setNeedsStatusBarAppearanceUpdate];
Добавьте следующий метод:
Примечание : это не работает для контроллеров внутри
UINavigationController
, см . Комментарий Тайсона ниже :)Swift 3 - это будет работать внутри контроллеров
UINavigationController
. Добавьте этот код в свой контроллер.Swift 5 и SwiftUI
Для SwiftUI создайте новый файл swift с именем
HostingController.swift
Затем измените следующие строки кода в
SceneDelegate.swift
в
источник
Кроме того, вы можете отказаться от внешнего вида строки состояния на основе контроллера представления:
View controller-based status bar appearance
дляNO
в вашейInfo.plist
.[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
Примечание: этот метод устарел в iOS9. Используйте
preferredStatusBarStyle
вместо этого на UIViewController. (см. Apple Developer Library )источник
Вы можете сделать это без написания какой-либо строки кода!
Выполните следующие действия, чтобы цвет текста в строке состояния стал белым во всем приложении.
На вашем проекте plist файл:
Transparent black style (alpha of 0.5)
NO
NO
источник
UIStatusBarStyleLightContent
чтоplist info
вызывало быTransparent Black
тот же трюк :) плюс, вам нужно добавитьView controller-based status bar appearance
его, поскольку его там нет изначально, и это все, что вам нужно, чтобы заставить его работать :)<key>UIStatusBarStyle</key> <string>UIStatusBarStyleLightContent</string> <key>UIViewControllerBasedStatusBarAppearance</key> <false/>
Примечание. Ответ с наибольшим количеством голосов не работает для iOS 7/8.
В Info.plist установите «Просмотр внешнего вида строки состояния на основе контроллера» как НЕТ
В AppDelegate добавить
в
Это решение работает для iOS 7/8
источник
Для меня ничего не произошло с использованием всех вещей в других ответах (и из других источников / документации). Что помогло, так это установило стиль панели навигации на «черный» в XIB. Это изменило текст на белый без какого-либо кода вообще.
источник
Ничто из этого не сработало для меня, так что вот рабочее решение ...
В
Info.plist
добавьте строку:UIViewControllerBasedStatusBarAppearance
и установите значениеNO
.Затем в AppDelegate в
didFinishLaunchingWithOptions
, добавьте эти строки:источник
Вам не нужно делать код для этого
Вам необходимо добавить ключ «Просмотр внешнего вида строки состояния на основе контроллера» в info.plist следующим образом:
& установить его тип значения на Boolean и значение на NO. Затем нажмите на настройки проекта, затем нажмите вкладку «Общие» и в разделе «Информация о развертывании» установите предпочтительный стиль строки состояния .Light следующим образом:
Это оно.
источник
Всего два шага, как показано ниже:
Шаг 1:
На вкладке Информация
project target
, Добавить строку:UIViewControllerBasedStatusBarAppearance
установить значениеNO
.Шаг 2:
В проекте
AppDelegate.m
:источник
Это работает в Golden Master iOS 7 и Xcode 5 GM seed и iOS7 SDK, выпущенных 18 сентября 2013 года (по крайней мере, со скрытым навигационным контроллером):
Установите
the UIViewControllerBasedStatusBarAppearance
наNO
вInfo.plist
.В
ViewDidLoad
методе или в любом месте, где вы хотите изменить стиль строки состояния:[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
источник
Если ваш UIViewController находится внутри UINavigationController, вам нужно установить BarStyle:
Оригинальный ответ здесь
https://devforums.apple.com/message/844264#844264
источник
Если у вас есть встроенный контроллер навигации, созданный с помощью Interface Builder , обязательно установите следующее в классе, который управляет вашим контроллером навигации:
Это должно быть все, что вам нужно.
источник
Я использую Xcode 6 beta 5 в проекте Swift для приложения iOS 7.
Вот что я сделал, и это работает:
info.plist:
источник
В AppDelegate.m добавьте следующее.
А в файле Plist установите для параметра «Просмотр внешнего вида строки состояния на основе контроллера» значение NO.
источник
Просто в приложении
источник
Ну, это действительно работает как кусок пирога для меня.
Перейти к вашему приложению
info.plist
.View controller-based status bar appearance
наNO
Status bar style
наUIStatusBarStyleLightContent
Затем перейдите к делегату вашего приложения и вставьте следующий код, где вы устанавливаете RootViewController вашего окна.
Бинго. Это работает для меня.
источник
Перейти к
Project
->Target
,Затем установите
Status Bar Style
наLight
. Строка состояния становится белой на экране запуска.Затем установите
View controller-based status bar appearance
равнымNO
вInfo.plist
.источник
View controller-based status bar appearance equal
ToNO
был кусок я пропускал. СпасибоВ Swift 3 это очень просто, всего за 2 шага. Перейдите в ваш info.plist и измените ключ
View controller-based status bar appearance
на «НЕТ». Затем в Appdelegate просто добавьте эту строку в метод didfinishlaunchingwithoptionsэто было объявлено устаревшим в iOS9, теперь вы должны переопределить это свойство в rootviewcontroller
делать это не рекомендуется в iOS 9 следует сделать это на rootviewcontroller
источник
iOS 7 позволяет отдельным контроллерам представления определять внешний вид строки состояния, как описано в документации для разработчиков Apple:
Настройка внешнего вида строки состояния глобально - это двухэтапный процесс.
Во-первых, вам нужно сказать 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/
источник
Не нужно делать ничего лишнего, просто напишите этот код в вашем viewController и получите строку состояния белого цвета.
источник
Обновлен ответ для Xcode GM Seed:
В
Info.plist
положитьView controller-based status bar appearance
вNO
В проекте установите:
В ViewDidLoad:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
источник
Я думаю, что все ответы на самом деле не указывают на проблему, потому что все они работают в определенных сценариях. Но если вам нужно охватить все случаи, следуйте пунктам ниже:
В зависимости от того, где вам нужен стиль освещения в строке состояния, вы всегда должны иметь в виду следующие 3 момента:
1) Если вам нужна строка состояния на экране запуска или в других местах, где вы не можете ее контролировать (не в контроллерах представления, а в некоторых управляемых системой элементах / моментах, таких как Launch Screen), вы переходите к настройкам своего проекта
2) если у вас есть контроллер внутри контроллера навигации, вы можете изменить его в конструкторе интерфейса следующим образом:
а) Выберите панель навигации вашего контроллера навигации
б) Затем установите стиль панели навигации на «Черный», потому что это означает, что у вас будет «черный» -> темный фон под строкой состояния, поэтому он установит для строки состояния белый цвет.
Или сделать это в коде следующим образом
3) Если у вас есть только один контроллер, который должен иметь свой собственный стиль строки состояния, и он не встроен в какую-либо структуру контейнера как UINavigationController
Установите стиль строки состояния в коде для контроллера:
источник
Просто звоню
в
Метод моих
AppDelegate
работ отлично подходит для меня в iOS7.источник
View controller-based status bar appearance = NO
Это задокументировано в Руководстве по переходу пользовательского интерфейса iOS 7 , к которому вам нужен идентификатор разработчика Apple для прямого доступа. Соответствующая выдержка:
Также возможно представляет интерес:
Я определенно рекомендую ознакомиться с документом, к которому, опять же, вы можете получить доступ с помощью своего идентификатора разработчика Apple.
источник
Вот Apple Guidelines / Инструкция по изменению строки состояния. Только темные и светлые (в то время как и черные) разрешены в строке состояния.
Вот как изменить стиль строки состояния:
Если вы хотите , чтобы стиль набора статуса бара, уровень приложений , а затем установить
UIViewControllerBasedStatusBarAppearance
вNO
вашей .plist»файла`.если вы хотите установить стиль строки состояния, на уровне контроллера представления выполните следующие действия:
UIViewControllerBasedStatusBarAppearance
значениеYES
в.plist
файле, если вам нужно установить стиль строки состояния только на уровне UIViewController.В viewDidLoad добавить функцию -
setNeedsStatusBarAppearanceUpdate
переопределите предпочитаемый элемент StatusBarStyle в вашем контроллере представления.
-
Установите значение .plist в соответствии с уровнем настройки стиля строки состояния.
Вот несколько хитростей, чтобы изменить / установить цвет фона для строки состояния во время запуска приложения или во время viewDidLoad вашего контроллера представления.
Вот результат:
источник
Я сделал некоторые вещи по-другому, и это работает для меня.
Без изменений в коде я настроил свой файл .plist следующим образом:
Я надеюсь, что это помогает.
редактировать
Для каждого контроллера представления я изменяю свойство Simulated Metrics "строки состояния" в раскадровке с "выведенного" на "Легкое содержимое"
источник
Если вы хотите получить тот же результат со Swift, вы можете использовать этот код в файле AppDelegate.swift:
И текст вашей строки состояния будет белым :-)!
источник
Если вы все еще хотите использовать
View controller-based status bar appearance
в файле info.plist значение YES, что означает, что вы можете изменять строку состояния для каждого контроллера представления, используйте следующее для белого текста в строке состояния в ViewDidLoad:источник
В Plist добавьте это:
UIStatusBarStyleLightContent
NO
источник
в info.plist установите значение поля NO. Просмотрите внешний вид строки состояния на основе контроллера и установите индикатор стиля строки состояния в target> general setting.
источник
Позвольте мне дать вам полный ответ на ваш вопрос. Изменить цвет текста в строке состояния очень просто, но в iOS 7 это немного сбивает с толку, особенно для новичков.
Если вы пытаетесь изменить цвет с черного на белый в раскадровке, выбрав контроллер представления и перейдя к симулированным метрикам с правой стороны, это не сработает, и я не знаю почему. Это должно работать, изменяя, как это, но как угодно.
Во-вторых, вы не найдете свойство UIViewControllerBasedStatusBarAppearance в вашем списке, но по умолчанию его там нет. Вы должны добавить его самостоятельно, нажав на кнопку +, а затем установите его на NO.
Цвет текста в строке состояния ios 7
Наконец, вам нужно перейти в файл AppDelegate.m и добавить следующее в метод didFinishLaunchingWithOptions, добавив следующую строку:
Это изменит цвет на белый для всех ваших контроллеров представления. Надеюсь это поможет!
источник