style - statusbar ios
Как изменить цвет текста строки состояния в iOS (20)
Мое приложение имеет темный фон, но в iOS 7 панель состояния стала прозрачной. Поэтому я ничего не вижу, только зеленый индикатор батареи в углу. Как изменить цвет текста строки состояния на белый, как на главном экране?
Установите для
UIViewControllerBasedStatusBarAppearance
значениеYES
в файле .plist.В
viewDidLoad
выполните[self setNeedsStatusBarAppearanceUpdate];
Добавьте следующий метод:
- (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
}
В AppDelegate.m добавьте следующее.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
}
И в файле Plist установите «Просмотр состояния панели управления на основе контроллера» на NO.
В качестве альтернативы вы можете отказаться от внешнего вида панели состояния на основе вида:
- Установите
View controller-based status bar appearance
наNO
в вашемInfo.plist
. - Вызов
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
Примечание. Этот метод устарел в iOS9. Вместо этого используйте preferredStatusBarStyle
на UIViewController. (см. Библиотека разработчиков Apple )
Для меня ничего не случилось с использованием всех вещей в других ответах (и из других источников / документации). Что помогло установить стиль панели навигации «Черный» в XIB. Это изменило текст на белый без какого-либо кода.
Если ваш UIViewController находится внутри UINavigationController, вам нужно будет установить BarStyle:
-[UINavigationBar setBarStyle:UIBarStyleBlack]
Оригинальный ответ здесь
Если вы хотите получить тот же результат с помощью Swift, вы можете использовать этот код в файле AppDelegate.swift:
UINavigationBar.appearance().barStyle = .BlackTranslucent
И текст вашей строки состояния будет белым :-)!
Если у вас встроенный контроллер навигации, созданный с помощью Interface Builder , не забудьте установить следующее в классе, управляющем вашим навигационным контроллером:
-(UIStatusBarStyle)preferredStatusBarStyle{
return UIStatusBarStyleLightContent;
}
Это должно быть все, что вам нужно.
Не нужно делать что-то лишнее, просто напишите этот код в вашем viewController и получите статус-баре цвет белый
- (UIStatusBarStyle)preferredStatusBarStyle{return UIStatusBarStyleLightContent;}
Ничто из этого не сработало для меня, так что вот рабочее решение ...
В Info.plist
добавьте строку:
UIViewControllerBasedStatusBarAppearance
и установите значение NO
.
Затем в AppDelegate в didFinishLaunchingWithOptions
добавьте следующие строки:
[application setStatusBarHidden:NO];
[application setStatusBarStyle:UIStatusBarStyleLightContent];
Ответ обновлен для Xcode GM Seed:
В
Info.plist
поместитеView controller-based status bar appearance
какNO
В проекте установите:
В ViewDidLoad:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
Позвольте мне дать вам полный ответ на ваш вопрос. Изменение цвета текста в строке состояния очень просто, но его немного запутано в iOS 7 специально для новичков.
Если вы пытаетесь изменить цвет с черного на белый в Storyboard, выбрав контроллер вида и перейдя на Simulated Metrics с правой стороны, это не сработает, и я не знаю почему. Он должен работать, изменяясь таким образом, но каким-то образом.
Во-вторых, вы не найдете свойство UIViewControllerBasedStatusBarAppearance в своем plist, но по умолчанию его не существует. Вы должны добавить его самостоятельно, нажав на кнопку +, а затем установите значение НЕТ.
Цвет текста в строке состояния ios 7
Наконец, вам нужно перейти в файл AppDelegate.m и добавить следующее в метод didFinishLaunchingWithOptions, добавить следующую строку:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
Это изменит цвет на белый для всех ваших контроллеров. Надеюсь это поможет!
Чтобы подвести итог, отредактируйте свой проект Info.plist
и добавьте:
View controller-based status bar appearance
: NO
Status bar style
: Opaque black style
или если у вас есть сырой ключ / значение plist
UIViewControllerBasedStatusBarAppearance
: NO
UIStatusBarStyle
: Opaque black style
Это описано в Руководстве по переходу на iOS 7 UI , для которого вам необходим идентификатор разработчика Apple, чтобы получить доступ напрямую. Соответствующая выдержка:
Поскольку строка состояния прозрачна, вид за ней просматривается. [...] Используйте константу
UIStatusBarStyle
чтобы указать, должно ли содержимое статусной панели быть темным или светлым:
UIStatusBarStyleDefault
отображает темное содержимое. [...]
UIStatusBarStyleLightContent
отображает световой контент. Используйте, когда темное содержимое находится за панель состояния.
Также возможно интерес:
В iOS 7 вы можете управлять стилем строки состояния с отдельного контроллера vew и изменять его во время запуска приложения. Чтобы принять участие в этом поведении, добавьте ключ
UIViewControllerBasedStatusBarAppearance
в файлInfo.plist
приложения и дайте ему значениеYES
.
Я определенно рекомендую просмотреть документ, который, опять же, вы можете получить доступ с помощью идентификатора разработчика Apple.
Я думаю, что все ответы на самом деле не указывают на проблему, потому что все они работают в конкретных сценариях. Но если вам нужно покрыть все случаи, выполните следующие пункты:
В зависимости от того, где вам нужен стиль строки состояния, вы всегда должны иметь в виду эти 3 балла:
1) Если вам нужна строка состояния на экране запуска или в других местах, где вы не можете управлять им (не на контроллерах, а на некоторых элементах / моментах, управляемых системой, например, на экране запуска). Вы переходите к настройкам вашего проекта
2) если у вас есть контроллер внутри контроллера навигации. Вы можете изменить его в построителе интерфейса следующим образом:
a) Выберите навигационную панель вашего навигационного контроллера
b) Затем установите стиль панели навигации на «Черный», потому что это означает, что у вас будет «черный» -> темный фон в строке состояния, поэтому он установит строку состояния в белый цвет
Или сделайте это в коде следующим образом
navigationController?.navigationBar.barStyle = UIBarStyle.Black
3) Если у вас есть только контроллер, который должен иметь свой собственный стиль строки состояния, и он не встроен в какую-либо структуру контейнера как UINavigationController
Установите стиль строки состояния в коде для контроллера:
в info.plist задайте значение поля NO. Отобразите строку состояния на основе контроллера и установите индикатор стиля строки состояния в целевую> общую настройку.
В Swift 3 очень просто всего 2 шага. Перейдите в свой info.plist и измените View controller-based status bar appearance
на View controller-based status bar appearance
на «NO». Затем в Appdelegate просто добавьте эту строку в метод dofinishlaunchingwithoptions
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
UIApplication.shared.statusBarStyle = .lightContent
return true
}
Вам не нужно делать какой-либо код для этого
Вам нужно добавить в поле info.plist ключ «Просмотреть статус панели управления на основе контроллера» следующим образом:
& установите для своего значения значение Boolean & value равным NO. Затем щелкните по настройкам проекта, затем щелкните вкладку «Общие» и в разделе «Информация о развертывании» установите стиль предпочтительной строки состояния в .Light следующим образом:
Это оно.
Вы можете сделать это, не написав ни одной строки кода!
Сделайте следующее, чтобы цвет текста в строке состояния был белым по всему приложению.
На вас файл проекта plist :
- Стиль строки состояния:
Transparent black style (alpha of 0.5)
- Просмотр состояния панели состояния контроллера:
NO
- Строка состояния изначально скрыта:
NO