Подтвердить что ты не робот

Строка состояния, показывающая черный текст, только на 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, и это, кажется, имеет желаемый эффект во всем остальном. Любые идеи, что происходит?

(Я еще не касался ни одной раскадровки, может быть, что-нибудь с этим? Я надеялся, что смогу это отложить на некоторое время:)

4b9b3361

Ответ 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
}

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

  • Установите UIViewControllerBasedStatusBarAppearance в YES в файле .plist, если вам нужно установить стиль строки состояния только на уровне UIViewController.
  • В функции addDidLoad add - setNeedsStatusBarAppearanceUpdate

  • переопределить привилегированныйStatusBarStyle в вашем контроллере представления.

-

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

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

Задайте значение .plist в соответствии с уровнем настройки стиля строки состояния. enter image description here