LaunchScreen.xib иногда отображается черным цветом

Я использую xib для своего экрана запуска в iOS8, и ИНОГДА вместо отображения правильного экрана запуска (который составляет 3 UILabels над UIImageView) он отображается как ЧЕРНЫЙ. Но не каждый раз. Это я могу воспроизвести как на симуляторе, так и на устройстве.

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

Изображение в ImageView представляет собой изображение .png размером 242 КБ.

Какие-нибудь мысли? Конечно, я мог бы просто использовать изображение вместо xib, если мне нужно, но мне интересно, известная ли это проблема или как ее исправить.


person Fraggle    schedule 11.01.2015    source источник


Ответы (1)


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

Это известное (и принятое) состояние гонки в симуляторе iOS. Блокировка до завершения рендеринга изображения добавит небольшую задержку в последовательность запуска каждый раз, когда вы нажимаете «Сборка и запуск». Если вы хотите отладить экран запуска, вы можете выйти из приложения (удалить его из переключателя приложений) и перезапустить его вручную (не через сборку и запуск).

Это решение может измениться в будущем, но на данный момент оно сокращает время между нажатием кнопки «Сборка и запуск» и завершением запуска приложения.

person Jeremy Huddleston Sequoia    schedule 11.01.2015
comment
Спасибо, Джереми. Приятно слышать это из знающего источника. То же самое иногда происходит на реальном устройстве, когда я создаю и запускаю Xcode, я предполагаю, что это та же причина. - person Fraggle; 12.01.2015
comment
Да, устройство и сим ведут себя здесь одинаково. - person Jeremy Huddleston Sequoia; 12.01.2015
comment
@JeremyHuddlestonSequoia Кажется, есть ошибка, из-за которой генерация завершается сбоем, а сгенерированная миниатюра черная, и каждый запуск отображается черным. Это наиболее заметно на iPhone 6 Plus, где, как я предполагаю, генерация занимает слишком много времени и уничтожается операционной системой, если она не удается через некоторое время. - person Leo Natan; 21.02.2015
comment
Нет, генерация не убивает ОС. Запуск приложения просто не блокируется генерацией ассета. - person Jeremy Huddleston Sequoia; 21.02.2015