Строка состояния, показывающая черный текст, только на iPhone 6 iOS 8 симулятор
Я пытаюсь преобразовать свое приложение iOS 7 в iOS 8 в Xcode 6 GM, и когда я запускаю его на iPhone 5 или ниже с iOS 8, все в порядке, но на симуляторах iPhone 6 и 6 Plus, Строка состояния имеет черный текст вместо белого, как и везде в любое время. Я установил Info.plist UIStatusBarStyle в "Прозрачный черный стиль (альфа 0,5)" через Xcode, и это, кажется, имеет желаемый эффект во всем остальном. Любые идеи, что происходит?
(Я еще не касался ни одной раскадровки, может быть, что-нибудь с этим? Я надеялся, что смогу это отложить на некоторое время:)
Ответы
Ответ 1
Эта ошибка возникает только в том случае, если ваше приложение масштабируется, чтобы соответствовать разрешению более новых устройств.
Быстрое исправление (кто знает, будет ли это даже рассмотрено в 8.1) - обеспечить правильное разрешение загрузки изображений в вашем приложении.
От https://developer.apple.com/ios/human-interface-guidelines/graphics/launch-screen/
For iPhone 7, iPhone 6s, iPhone 6:
750 x 1334 (@2x) for portrait
1334 x 750 (@2x) for landscape
For iPhone 7 Plus, iPhone 6s Plus, iPhone 6 Plus:
1242 x 2208 (@3x) for portrait
2208 x 1242 (@3x) for landscape
В моем приложении мы поддерживаем только портрет, поэтому обеспечиваем его 750x1334 и 1242x2208.
И просто для подтверждения, если это не было очевидно, вам нужно использовать UIStatusBarStyleLightContent для вашего стиля строки состояния.
Ответ 2
Итак, вот как я его исправил
В PLIST
Просмотр строки состояния на основе контроллера NO
Строка состояния строки UIStatusBarStyleLightContent
В AppDelegate DidFinishLaunching
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
[self.window setBackgroundColor:[UIColor whiteColor]];
В каждом контроллере просмотра
- (UIStatusBarStyle) preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
Ответ 3
Моя строка статуса приложения отлично работала в iOS 7, используя только параметры проекта/цели:
Status bar style = UIStatusBarStyleLightContent
и
View controller-based status bar appearance = NO
но в iOS 8 (симуляторы iPhone 6 и iPhone 6 Plus) строка состояния не показывалась. Изменение вида панели состояния на основе контроллера на YES, а затем добавление:
// Objective C
- (UIStatusBarStyle) preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
//Swift
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent
}
в ViewController снова появилась белая строка состояния, но только после запуска начального корневого контроллера. Во время первого запуска строка состояния остается черной.
Ответ 4
Подобный ответ (в настоящее время проголосовавший как 2-й) уже опубликован, покупайте в интересах поддержания этого сообщения в актуальном состоянии, вот версия Swift.
-
Добавьте строку в ваш файл info.plist с именем Просмотр состояния панели управления на основе контроллера и установите его логическое значение НЕТ.
-
В файле AppDelegate.swift добавьте следующий метод:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool {
UIApplication.sharedApplication().statusBarStyle = .LightContent
return true
}
-
Мне не нужно было делать этот шаг, чтобы он работал (т.е. делайте шаги 1 и 2, и это может сработать). Если нет, попробуйте добавить следующий метод к каждому из ViewControllers:
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent
}
Я надеюсь, что это было полезно,
Лоик
Ответ 5
- Открыть Info.plist
- Добавить новое свойство под названием "Просмотр состояния панели управления на основе контроллера" (Boolean) и установить его значение "НЕТ"
- Добавить новое свойство под названием "Стиль строки состояния" (String) и установить его значение "Непрозрачный черный стиль"
Готово.
Ответ 6
Добавьте следующую строку в метод AppDelegate
didFinishLaunchingWithOptions:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackOpaque animated:NO];
Ответ 7
Шаг 1. Откройте файл info.plist вашего приложения и установите для UIViewControllerBasedStatusBarAppearance значение NO
Шаг 2: файл info.plist вашего приложения и установите стиль "Строка состояния" в UIStatusBarStyleLightContent
Ответ 8
Может быть проблема с симулятором. Используйте это, чтобы переопределить панель состояния или строку состояния для определенного контроллера вида.
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent
} //This is swift code
Ответ 9
Я знаю, что это плохой стиль, чтобы переопределить поведение в базовом классе с помощью категории, но это работает и может быть самым быстрым решением для его исправления.
Шаг №1:
Убедитесь, что для параметра UIViewControllerBasedStatusBarAppearance
или View controller-based status bar appearance
установлено значение YES
в вашем файле plist приложения.
Шаг # 2: Добавьте в свой проект следующий код:
@implementation UIViewController (StatusBarColorFix)
- (UIStatusBarStyle) preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
@end
Ответ 10
Хорошим решением для этого является использование новой поддержки nib для запуска образа, которая используется на моделях iPhone 6. Кажется, что только ошибка в iOS 8 означает, что модели iPhone 6 не проверяют стиль строки состояния при запуске, но они решаются, если вы добавляете в стартовый ник.
Как отметил Аарон Вассерман, вы также можете указать PNG для iPhone 6 и 6+, и это тоже помогает устранить проблему, если вы правильно настроили их!
Ответ 11
В вашей раскадровке выберите свой корневой контроллер и установите строку состояния по умолчанию
Ответ 12
Я выполнил следующие шаги, и они отлично работали для меня, также должны работать в iOS 8+.
1) Добавленное свойство Просмотр состояния строки состояния на основе контроллера = > НЕТ в Info.plist.
2) Добавьте следующий фрагмент кода в - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
AppDelegate.m
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
[self.window setBackgroundColor:[UIColor redColor]]; // Change color as per need.
3) Метод переопределения в ViewController
- (UIStatusBarStyle) preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
Ответ 13
Для быстрых 4 и iOS 11
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
application.statusBarStyle = .lightContent
return true
}
Ответ 14
Вот Руководство Apple/Инструкция о изменении строки состояния/текста.
Здесь - Как изменить стиль строки состояния:
Если вы хотите установить стиль строки состояния, уровень приложения затем установите UIViewControllerBasedStatusBarAppearance
в NO
в файле `.plist '.
Или программно вы можете сделать из App Delegate:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
application.statusBarStyle = .lightContent
return true
}
если вы хотите установить стиль строки состояния, на уровне контроллера уровня, выполните следующие действия:
-
override func viewDidLoad() {
super.viewDidLoad()
self.setNeedsStatusBarAppearanceUpdate()
}
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
Задайте значение .plist в соответствии с уровнем настройки стиля строки состояния.
![enter image description here]()