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

Цвет панели состояния iPhone 6

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

У меня UIStatusBarStyle установлен на UIStatusBarStyleLightContent и UIViewControllerBasedStatusBarAppearance на NO.

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

4b9b3361

Ответ 1

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

- (UIStatusBarStyle) preferredStatusBarStyle {
    return UIStatusBarStyleLightContent;
}

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

ИЗМЕНИТЬ

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

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

Я не могу воспользоваться этим, просто свидетельствую, что он сработал. Вот где я нашел решение fooobar.com/questions/122437/... и http://beageek.biz/how-to-create-launch-images-app-xcode-ios/

Ответ 2

i была та же проблема и решена с помощью

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

-(UIStatusBarStyle)preferredStatusBarStyle{
    return UIStatusBarStyleLightContent;
}

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

Ответ 3

Я также упомянул об этом в ответ на этот пост, но единственная работа, которую я нашел, - это конвертировать ваше приложение, чтобы использовать активы 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 set UIStatusBarStyle = UIStatusBarStyleLightContent
  • Переопределить метод preferredStatusBarStyle: во всех применимых UIViewController в вашем проекте. (Для этого параметра убедитесь, что в вашем приложении info.plist есть UIViewControllerBasedStatusBarAppearance = YES)

Ответ 4

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

Только чтобы узнать, как создать панель событий с экрана запуска:

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

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

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

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