Экран запуска не работает на iOS 14 с Xcode 12

Я очень расстроен сейчас. Я обновил Xcode до версии 12 и протестировал свое приложение на iOS 14. Теперь проблема в том, что мой экран запуска отображается черным цветом. Я тестировал его на устройстве iOS 13.5, и он все еще работает должным образом. Я попытался удалить подход launchscreen.storyboard и добавил клавишу Launch Screen в info.plist, но затем изображение масштабируется до полного размера.

Теперь я немного потестировал launchscreen.storyboard и нашел несколько вещей.

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

У вас возникли проблемы с iOS 14 и подходом к раскадровке?

Если да, то как вы это исправили?


person Sylber    schedule 20.09.2020    source источник
comment
была аналогичная проблема, и переименование изображения из LaunchImage.jpg в SplashImage.jpg решило проблему, по крайней мере, на данный момент   -  person Shaz    schedule 21.09.2020
comment
Мы сталкиваемся с той же проблемой. Но то же самое происходит и с нашими сборками с iOS 13 SDK на iOS 14.   -  person joelfischerr    schedule 21.09.2020


Ответы (18)


Работа, которая, кажется, работает для меня:

По странной причине, если я уменьшаю изображение, значит, оно работает нормально. У меня было полноразмерное изображение размером 2732x2732, и это не сработало. Уменьшение размера того же изображения до 2400x2400 работает нормально. Я пробовал с 2500x2500 и 2600x2600, но ни один не работал.

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

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

Не уверен, что это что-то с размером / размером изображения или с перезагрузкой.

Дальнейшие обновления:

Я загрузил ту же сборку (с меньшим изображением) в TestFlight и установил ее на свое устройство (в основном обновлено по сравнению с предыдущей версией с изображением большого размера), и, к сожалению, проблема не исчезла :(

Теперь я удалил приложение и снова установил его из TestFlight. Проблема все еще сохраняется.

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

person Saddam Akhtar    schedule 21.09.2020
comment
Убедитесь, что "Content Mode" UIImageView установлен правильно. В моем случае он установлен на "Aspect Fil" - person Saddam Akhtar; 22.09.2020
comment
Спасибо! Удалите приложение, перезагрузите устройство и снова установите приложение! это сработало и для меня - person Lasantha Basnayake; 24.09.2020
comment
Спасибо, это связано с очень большим изображением. Поменял на маленький размер и все заработало! - person Flappy; 06.10.2020
comment
Я обнаружил, что уменьшения размеров до 2400 недостаточно. Мне помогло уменьшение размера файла до 1 МБ. - person IowaEric; 21.11.2020
comment
Как ни странно, файл PNG размером 60 КБ 2732x2732 не работал, уменьшение его до 2400x2400 устранило проблему! - person timbru31; 21.01.2021

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

person Sylber    schedule 16.10.2020
comment
Это сработало для меня. У этого решения есть недостаток, заключающийся в том, что больше невозможно установить другое изображение для темного и светлого режима (мой логотип приложения имеет два немного разных цветовых тона для светлого и темного фона). - person user3122959; 17.11.2020
comment
Одно небольшое замечание. Я переместил эти изображения за пределы папки Assets.xcassets. И мой экран запуска снова заработал! - person RunesReader; 27.02.2021

Обходной путь - использовать кнопку с изображением вместо просмотра изображения в раскадровке запуска. Работает как часы!!

person RayanAlsobbahi    schedule 23.12.2020
comment
Святая моли! Я перепробовал все на этой странице, и ничего не получилось. Спасибо, Раян, что поделился! - person Saamer; 26.01.2021
comment
Единственное решение, которое работает для моего приложения 11 → 14.5 (монотач xamarin). Что за взлом! - person Vlad Servitola; 18.05.2021
comment
Это ДЕЙСТВИТЕЛЬНО работает !!! Я пробовал так много решений, но работает только это! Прохладный! - person phuongzzz; 05.06.2021

Единственный обходной путь, который у меня сработал, - это добавить изображения вне папки Images.xcassets. После изменения этого и перестройки приложения все заработало.

Некоторая проблема возникает на iOS 14 или XCode 12.

person Italo Izaac    schedule 21.09.2020

Была такая же проблема. Проблема заключалась в изображении .png, используемом в раскадровке экрана запуска. Это привело к тому, что весь экран запуска был черным.

В нашем случае это было исправлено:

  • Выберите изображение меньшего размера
  • Удалить приложение с устройства / симулятора
  • Перезагрузите устройство / симулятор

Я обнаружил, что изображение было источником ошибки, заменив изображение другим в нашем приложении. Он сразу же работал с другим образом (перезапуска не требовалось).

person themenace    schedule 07.10.2020

Я столкнулся с этой проблемой

при использовании LaunchScreen.storyboard и использовании изображения в Assets.xcassets, не работающем на iOS 14 с Xcode 12.

Я решил это, попробовав изменить 3x изображение 2436 × 1125 и установить 2x изображение 828 × 1792.

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

person qing shao    schedule 12.11.2020
comment
Несколько советов, так как это ваш первый пост. 1) Убедитесь, что ваш ответ похож на ответ. Если начинать с фразы «У меня та же проблема», это не похоже на ответ. Постарайтесь быть более напористым, например Я столкнулся с этой проблемой, когда ... Я решил ее ... 2) Не добавляйте к своему ответу в комментариях. Вместо этого отредактируйте свой ответ. - person David Buck; 12.11.2020
comment
@DavidBuck Это очень помогло мне. Большое тебе спасибо. - person qing shao; 13.11.2020
comment
похоже мне помогла только перезагрузка айфона. - person djdance; 21.06.2021

У меня тоже было это. Довольно бесит. Мой стартовый экран - это просто фоновое изображение (2048x2048 PNG) и графическое изображение (2048x2048 PNG) посередине.

Для меня исправление заключалось в том, чтобы иметь меньшую среднюю графику (720x720 PNG), удалить изображения из любых каталогов ресурсов и добавить их в проект.

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

person Darkpaw    schedule 08.10.2020
comment
Симулятор (Xcode 12.3), кажется, необходимо перезапустить, чтобы заметить другой цвет фона или изображение запуска. Достаточно закрыть окно симулятора. - person Mark Knopper; 02.01.2021

Одной из причин может быть размер изображений. Поскольку изображения для экрана запуска iOS 14 ограничены 25 МБ, как указано в Apples Руководство по интерфейсу пользователя.

Изображение с разрешением 2,400x2,400 пикселей приведет к объему памяти около 22 МБ. С 2.500x2.500 мы достигаем 25 МБ.

У нас была та же проблема, когда полноэкранное изображение в LaunchScreen.storyboard было черным на всех устройствах @ 3x, таких как iPhone 12. Уменьшение размера только изображения запуска @ 3x с 3,072x3,072 до 2,400x2 .400 решил эту проблему.

Квадратное изображение - это простой способ поддержать альбомную и портретную ориентацию. Но он также должен работать, чтобы иметь разные изображения для каждой ориентации, где одно изображение в сумме меньше 25 МБ.

person Thorsten Stark    schedule 25.01.2021
comment
Определенно есть ошибка, из-за которой в iOS 14 растровое изображение растягивается до нужного размера. Я не вижу способа заставить это работать. - person RPSM; 26.01.2021
comment
Это решение предназначено для использования с LaunchScreen.storyboards, где вы используете UIImageView для отображения изображения. Здесь вы можете указать поведение масштабирования. Но хороший намек, я добавлю это в свой пост. - person Thorsten Stark; 27.01.2021

У меня аналогичная проблема с XCode12 / iOS14 и проектом React: launchscreen.storyboard отлично работал в предыдущих версиях. После обновления до XCode12 он выглядит следующим образом:

  • Запуск в черный экран (2-3 секунды)
  • Затем правильно отображается экран запуска

Если я попытаюсь использовать новый словарь экрана запуска в Info.plist, у меня возникнут следующие проблемы (такие же в другом приложении Xamarin):

  • Изображение увеличено / отображается не полностью
  • Настройка цвета фона полностью игнорируется (пробовал RGB и Color.xcasset)

Это просто полностью ошибка с Xcode 12!

person Kerry    schedule 05.10.2020
comment
Да, это то же самое поведение, с которым я столкнулся - person Sylber; 16.10.2020

Так что с 26 июня 2020 года у меня был баг с Apple через их систему обратной связи - FB7795777.

Я предоставил свой проект и множество диагностических отчетов, но они так и не вернулись с исправлением.

Однако сегодня исправил.

По сути, в SDK для iOS / iPadOS произошли некоторые изменения в том, как он поддерживает файлы .PNG и .JPG (размер или размеры - это проблемы, которые я думаю) в процессе экрана запуска.

Решение:

Откройте файл .PNG в Photoshop и повторно экспортируйте его с установленным флажком «Файл меньшего размера - 8-бит». Он уменьшил его более чем вдвое, и он сработал с первого раза.

person iOSProgrammingIsFun    schedule 24.10.2020
comment
Можно ли где-нибудь просмотреть этот билет обратной связи Apple? Я с нетерпением жду этого. - person CAJE; 15.06.2021

В моем случае сработало следующее: -

  1. Удалите файл экрана запуска из проекта - ›Общие -› Значки приложений и изображения запуска - ›Файл экрана запуска.

  2. Перейдите в файл info.plist и откройте его как исходный код.

  3. Добавьте туда следующий код и измените имя изображения: -

    <key>UILaunchScreen</key> <dict> <key>UIImageName</key> <string>splash(This is your image name)</string> </dict>

  4. В iOS 14 был выпущен этот новый ключ (UILaunchScreen). Так что берегись в следующий раз. Если вы получили ошибку, проверьте файл info.plist.

  5. Удачного кодирования :)

person dinesh sharma    schedule 04.11.2020
comment
К сожалению, это не работает. Изображение растянуто, и нет возможности указать альтернативное представление - person RPSM; 05.11.2020
comment
это будет работать только для ios 14? - person Ron K; 27.01.2021

В моем случае свойство ViewController Is Initial View Controller не проверялось. Кроме того, не забудьте установить фактический цвет представления, а не системный цвет, иначе вы можете столкнуться с проблемами с настройками темы устройства. То есть, если вы хотите показать определенный цвет.

Кроме того, чтобы получить доступ к этой настройке, убедитесь, что вы щелкнули фактический объект View Controller в раскрывающейся панели. XcodeImage

person Tiny    schedule 07.05.2021

Это может помочь другим, поэтому я добавляю это здесь.

Я использую Cordova для своего гибридного приложения, а затем загружаю свои графические ресурсы, созданные с помощью Asset Catalog Creator (это отличный маленький продукт).

Это работало отлично, пока я не обновился до Xcode 12 и не попытался запустить его под iOS 14.

Я обнаружил, что Кордова добавляла CDVLaunchScreen.storyboard, и у них был LaunchStoryboard.imageset (каталог) в их каталоге ресурсов, который содержал только файл contents.json.

Я просто скопировал это в свой каталог активов, и когда я перетащил это в мой обновленный проект (каждый раз создаваемый Кордовой), мое изображение запуска отображается снова.

Не спрашивайте меня, как и почему Xcode волшебным образом связывает все это вместе, но у меня это сработало.

Я могу передать файл contents.json, который работал с моим каталогом активов, если он поможет.

Кстати, на моем экране общих настроек НЕ выбран файл экрана запуска, но Xcode, похоже, находит необходимые файлы.

person JohnL    schedule 23.11.2020

У меня есть еще одно потенциальное решение, поскольку ни одно из существующих решений не помогло мне.

Я использую PDF-векторы в своем файле активов, и это обычно отлично работает. Но оказывается, что это не работает на экране запуска - он просто показывает, что полностью пропускает экран запуска, если он содержит изображение PDF.

Заменил его на большой PNG, проблема решена.

person Colin Nicholson    schedule 25.05.2021

Единственное, что у меня сработало, это:

  1. Удалите существующий LaunchScreen.storyboard и создайте новый
  2. Установите флажок Использовать как экран запуска

Использовать как экран запуска

  1. Проверьте, является ли начальный контроллер представления

Начальный контроллер представления

  1. Убедитесь, что изображение, которое вы используете, НЕ находится в папке Assets.xcassets. Я поместил свое изображение в корень проекта
  2. Удалите приложение, перезапустите симулятор и запустите приложение.

БИНГО !!!

person Mario Bouchedid    schedule 15.06.2021

Что сработало для меня:

  • Используйте изображения меньшего размера, например, предложенный @Darkpaw. В конце концов, стартовые раскадровки предназначены для обозначения грядущего пользовательского интерфейса, а не для иллюстрации.
  • Используйте изображение PNG (не PDF) и не помещайте его в каталог активов, как это предлагает @Sylber

Просто отмечу отдельно, что у меня были черные / сломанные стартовые маги, пока я не сделал ОБЕИХ шагов.

person Sparklellama    schedule 16.06.2021

Вы можете столкнуться с этой проблемой, если ваши изображения @ 1x, @ 2x, @ 3x пусты в папке xcassets изображений.

Убедитесь, что у вас есть изображения для каждого.

Вы также можете выбрать свое 1 изображение и установить Scales как Single Scale в инспекторе атрибутов (справа).

person Alan Scarpa    schedule 08.07.2021

Для меня это сработало:

1. поместите изображение xxx.PDF в Assets.xcassets и установите масштаб на Единый масштаб.

2. в Launch Screen.storyboard установите для изображения imageView значение xxx, затем установите для iamgeView ширину, высоту, centerX и снизу для просмотра

Потом работал у меня

DE: Xcode 12.5.1, iPhone 7P iOS 14.6

person Shenry    schedule 16.07.2021