Цвет строки состояния iPhone 6

Кто-нибудь заметил, что цвет строки состояния для симулятора iPhone 6 не использует правильный стиль?

я имею UIStatusBarStyle установлен в UIStatusBarStyleLightContent а также UIViewControllerBasedStatusBarAppearance установлен в NO,

Это прекрасно работает для всех телефонов на iOS8, кроме 6 и 6 Plus. В моем appDelegate я могу установить его с помощью UIApplication.sharedApplication().setStatusBarStyle(.LightContent, animated: false) но это не устанавливает его для экрана запуска. Это все еще хочет темнота, когда я хотел бы легкого содержания. У кого-нибудь есть решение для этого. Есть ли новый пункт, который мне нужно добавить в список?

4 ответа

Один из вариантов - установить UIViewControllerBasedStatusBarAppearance в YES в plist, а затем в каждом представлении контроллера есть этот метод

- (UIStatusBarStyle) preferredStatusBarStyle {
    return UIStatusBarStyleLightContent;
}

Это боль в заднице, и это определенно не самое лучшее решение. В настоящее время это работает на всех моих контроллерах представления, кроме одного, который я все еще ищу альтернативное решение для этого.

РЕДАКТИРОВАТЬ

Нашел лучшее решение. Держать UIViewControllerBasedStatusBarAppearance в NO а также Status bar style в UIStatusBarStyleLightContent в plist, затем добавьте правильное изображение запуска, выбрав + -> New Launch Image из активов изображения. Это предотвратит масштабирование приложения iPhone 6/6+ до размера экрана и отображение светящейся строки состояния. Правильные размеры экрана:

iPhone 4/4S: 640x960 px
iPhone 5/5S: 640x1136 px
iPhone 6:    750x1334 px (edited)
iPhone 6+:   1242x2208 px

Я не могу взять кредит на себя, просто свидетельствую, что это сработало. Здесь я нашел решение /questions/28405123/stroka-sostoyaniya-s-chernyim-tekstom-tolko-na-iphone-6-ios-8/28405132#28405132 и http://beageek.biz/how-to-create-launch-images-app-xcode-ios/

У меня была та же проблема, и я решил

- (void)viewDidLoad {
    [super viewDidLoad];
    [self setNeedsStatusBarAppearanceUpdate];
}

-(UIStatusBarStyle)preferredStatusBarStyle{
    return UIStatusBarStyleLightContent;
}

я ленивый, поэтому я создал контроллер, чтобы добавить его, а все остальные наследуют его

Я также упомянул об этом в ответ на это сообщение, но единственное, что я нашел, - это преобразование вашего приложения для использования ресурсов iPhone 6 и 6+.

После того, как вы добавите в свой менеджер активов активы загрузки правильного размера, ваше приложение будет соответствовать настройкам стиля строки состояния.

Из https://developer.apple.com/library/iOS/documentation/userexperience/conceptual/mobilehig/LaunchImages.html

For iPhone 6:

750 x 1334 (@2x) for portrait
1334 x 750 (@2x) for landscape

For iPhone 6 Plus:

1242 x 2208 (@3x) for portrait
2208 x 1242 (@3x) for landscape

Вы также должны дважды проверить, что вы устанавливаете свой стиль строки состояния в UIStatusBarStyleLightContent. Это можно сделать двумя способами:

  • В info.plist вашего приложения установите UIStatusBarStyle = UIStatusBarStyleLightContent
  • Переопределите метод предпочитаемый метод StatusBarStyle: во всех применимых UIViewController в вашем проекте. (Для этого параметра убедитесь, что в info.plist вашего приложения есть UIViewControllerBasedStatusBarAppearance = YES)

Ответ pfryerda верен, и образ проблемы является решением проблемы. Я исправил свою проблему, даже не зная. Я использовал новый Launch Screen File раздел вкладки "Общая информация" и установите мой стартовый экран в качестве отдельной раскадровки. В раскадровке я создал вид, размер которого был изменен до полного экрана, и я знаю, что эта проблема больше не возникает, поскольку экран запуска всегда имеет правильный размер.

Просто чтобы напомнить, как создать раскадровку экрана запуска:

  1. Создайте пустой файл раскадровки с именем LaunchScreen.storyboard.

  2. Перейдите к настройкам цели и на вкладке "Общие" выберите раскадровку в качестве файла экрана запуска. Xcode добавит соответствующий ключ UILaunchStoryboardName в Info.plist вашего приложения. Когда этот ключ присутствует, Xcode будет определять его приоритет над любыми установленными вами изображениями запуска.

  3. Добавьте сцену контроллера представления в раскадровку. Добавьте несколько подпредставлений на сцену и разместите их с ограничениями. Когда вы запускаете приложение на устройстве, ОС должна использовать сцену в качестве экрана запуска.

Вы можете узнать больше здесь: http://oleb.net/blog/2014/08/replacing-launch-images-with-storyboards/

Другие вопросы по тегам