Раскадровка Launch Screen не отображает изображение


162

Я пытаюсь получить изображение для отображения в качестве стартового экрана из моего файла Launch Screen.storyboard, однако изображение никогда не отображается. У меня есть ярлыки, которые хорошо отображаются, но изображение не появляется.

Вот как выглядит экран запуска в файле Launch Screen.storyboard: введите описание изображения здесь

Однако, когда я запускаю приложение на симуляторе (а также на физическом устройстве), вот что проявляется:

введите описание изображения здесь

Как видите, метка «Тест» отображается нормально, однако изображение не отображается. Я действительно не уверен, почему это происходит, и ничего, что я пытаюсь, кажется, не работает. Если у кого-то есть идеи, как это исправить, это будет с благодарностью.


1
Убедитесь, что ваше изображение в правильном формате PNG . не JPG, если это так.
Уткарш Сингх


3
Тот факт, что множественные, совершенно разные ответы имеют много голосов, очень и очень печален.
Даниэль Спрингер

1
Возможно ли, что если изображение слишком большое и время его загрузки занимает слишком много времени, оно удаляется с экрана запуска?
Lubbo

@ Лаббо, я думаю, в этой теории есть что-то. У меня есть вид запуска, который имеет большое и маленькое изображение, маленький загружается нормально, а большой - нет. Маленькое изображение в xcassets и большое изображение, которое я пробовал как в файле ресурсов, так и вне его.
Том Бейтс

Ответы:


327

После перезапуска XCode, очистки сборки и ряда других предложений на SO об этой проблеме. Что на самом деле исправило для меня, так это жесткая перезагрузка устройства. (Я потратил на это больше часа)

Я полагаю, это просто говорит о том, что старая поговорка «Вы выключили и снова включили» все еще верна для последних гаджетов!

Как перезагрузить iPhone XS или iPhone XS Max

  1. Быстро нажмите и отпустите кнопку увеличения громкости
  2. Быстро нажмите и отпустите кнопку уменьшения громкости
  3. Нажмите и удерживайте боковую кнопку, пока не появится логотип Apple

30
Этот парень прав. Просто сделав полную перезагрузку устройства исправил это для меня!
Ланс Самария

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

3
Спасибо. Это также работает для симулятора. После перезапуска симулятора изображение на Launch Scree.storyboard, наконец, появляется. Это определенно ошибка iOS.
Винс Юань

4
Та же проблема здесь. Даже если я сменил изображение на экране запуска в симуляторе, старое изображение каким-то образом все еще сохранялось в моем телефоне. Пробовал чистую сборку, менял имя файла, менял образ, не работал. Мне пришлось выключить и снова включить телефон. Это исправило это.
Пол

3
Это 2020 год, и это все еще спасло мой день! Спасибо!
Безелеил

91

Я тоже возился с этим часами. Но я нашел решение сейчас. Вам нужно добавить изображение в ваш проект, а также в assets.xcassets с помощью перетаскивания.


8
Это было оно. Имидж должен был быть как в проекте, так и в активах. Это похоже на игру в удар-моль. Какой совет это исправит? никто не знает.
FranticRock

кто знал, что вы должны добавить изображение в проект тоже
Абдул Вахид

2
Добавление изображения только к проекту исправило мою проблему :)
Снеха

3
Спасибо, это разобрано для меня. Чтобы добавить к этому, я ранее назвал изображения размером (launch280.png, launch560.png, launch840.png), а также добавил актив в Assets.xcassets с именем актива launch. Но это все еще не сработало. Мне пришлось переименовать файлы изображений в launch.png, launch@2x.png и launch@3x.png, добавить их в проект, добавить их в качестве актива с именем launch, и тогда это сработало. Благодаря компании Apple для создания самых простых вещей , без необходимости сложных ¬_¬
Mashers

2
Ааа, и я здесь уже во второй раз 3 года спустя ... Это апрель 2020 года, XCode все еще имеет эту ошибку ...
Хорошо

42

У меня была та же проблема, добавление изображения в «Фазы сборки -> Копировать ресурсы комплекта» исправило это для меня.


6
Это то, что мне было нужно. Изображение должно быть в основном комплекте, а не в файле ресурсов.
Меонардо

Это то, что сделал это для меня.
Крис

Исправил это для меня, спасибо!
Адам Элиезеров

28

Выполните следующие шаги,

  1. Удалить приложение с устройства
  2. Перезагрузите устройство
  3. Строить снова

Если не работает, удалите производные данные. Настройки XCode-> Locationtab-> Производные данные. Затем выполните вышеуказанные шаги.


25

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

Итак, как было сказано ранее:

  1. Импортируйте желаемое изображение в ваш проект Xcode (просто перетащите его)
  2. Изменить его ограничения и выравнивание
  3. Обновление фреймов, решающих проблемы с автоматической компоновкой
  4. В меню вкладки «Инспектор атрибутов» (как правило, в правом углу меню xCode) в представлении «Изображение»> «Изображение» удалите расширение изображения (.png или .jpg) - вот и все.

На экране дизайна он не появится, но когда вы запустите приложение, оно будет показано.

Я надеюсь, что это может помочь!


1
работал на меня! до того как я попробовал ваше решение, единственный способ показать это - перезагрузить телефон! Спасибо
Филипе Са

1
Спасибо! Понятия не имею, как ты это нашел, но это работает!
Стас Вольский,

Да, в самом деле!! Хитрость заключается в том, чтобы удалить расширение изображения из файлов изображений .png! Файлы .jpg не работали, поэтому мне пришлось сначала конвертировать их в .png! Большое спасибо, Джносор!
ActiveA

24

Очень расстраивает. Решение, которое наконец сработало:

  1. Сделать жесткую перезагрузку устройства

  2. Удалить приложение

  3. Установить приложение из Xcode


17

Наконец перезагрузите телефон у меня работает !!

Я потратил часы на эту проблему. Попытался изменить имя изображения, удалить все ресурсы изображения, изменить info.plist, перезапустить Xcode и даже попытался установить все атрибуты изображений (что вы можете сказать, насколько я был в отчаянии).


Это не дает ответа на вопрос. Как только у вас будет достаточно репутации, вы сможете комментировать любой пост ; вместо этого предоставьте ответы, которые не требуют разъяснений от автора . - Из Обзора
Адам Ричардсон

Мне жаль, @AdamRichardson, он дает ответ и правильный тоже, и это был мой случай. Мне просто нужно было просто перезапустить телефон / симулятор.
Кегам К.

Я потратил 16 часов, пытаясь решить эту проблему, и, наконец, перезагрузка телефона сделала свое дело.
Кришнан

2
Бьюсь об заклад, кто-то из Apple, который мог бы это исправить, должен подумать: «О, им просто нужно перезагрузить свои телефоны - это не так, как это влияет на сборки релизов или что-то в этом роде. Мы можем оставить эту задачу на потом».
Динешарджани

В конечном итоге это
Тейлор Максвелл

12

Эта проблема связана с Assets.xcassets, чтобы исправить ее, вы должны добавить изображение в качестве ресурса, но не в папку xcassets, а затем должно работать нормально


2
Это единственное решение, работавшее до сих пор. Перезапуск xcode, очистка производных данных, изменение имени изображения не сработало. Я не рекомендую перезапускать устройство в качестве решения для всех
NightFury

эта ошибка так же стара, как создание xcassets. Я мысленно заполнил его в своей папке "вещи, которые яблоко никогда не решит".
Утка

8

В моем случае сброс содержимого и настроек симулятора устранил проблему.


7

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

  1. Добавьте новый набор изображений в XcodeAssets.
  2. Добавьте изображения в набор изображений.
  3. Добавьте вид изображения на экран запуска и установите свой набор изображений как изображение
  4. В инспекторе атрибутов Imageview снимите флажок 'очищает графический контекст'
  5. Очистите папку сборки и запустите снова.

введите описание изображения здесь


5

Кажется, есть некоторая проблема с кэшированием ресурсов в xCode. Возникла такая же проблема, перезапустил xCode и после этого все работает нормально.



3

Попробовав все в нескольких потоках StackOverflow, вот что сработало для меня:

  • Используйте .png
  • Не включайте его в свой каталог активов. Добавьте его непосредственно в иерархию вашего проекта, как если бы вы добавили любой исходный файл.
  • В представлении изображения загрузите изображение, включая его расширение. Пример: launch_app_image.png

(Возможно, придется обновить продукт или производные данные для обновления, но мне не нужно было)


2020, и это все еще актуально, иногда изменение изображения на новый PNG внутри каталога, когда оно работает, останавливает его. Не уверен, что это уровень сжатия, но простые файлы изображений работают.
Митчелл Керри

3

У меня была эта проблема после добавления изображения в проект и снятия с устройства устройства, проблема решена


3

Менял фоновое изображение заставки, а новое изображение не показывалось (реагирует на собственный проект).

Следуя ответам других.

Я сделал все ниже и это было исправлено:

  • Чистая сборка.
  • Удалить приложение из симулятора
  • Выйти из симулятора
  • Перезапустите XCode
  • Запустите приложение снова

3

Ну, на данный момент доступно устройство сетчатки, и я проигнорировал @1xизображение вAssets.xcassets .

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

После того, как тратить так много времени , я понял, что я только при условии @2xи @3xизображений для этого изображения логотипа.

Эта проблема решена путем добавления @1xверсии этого изображения.


1
ты спас мой день!
Камбала

2

Вы должны убедиться, что имя файла вашего изображения имеет формат .png или .jpg в конце, иначе оно не будет работать. Кроме того, перед добавлением изображения вы должны убедиться, что файл изображения находится в папке «Assets.xcassets» в вашем проекте. Это можно сделать простым перетаскиванием. Кроме того, убедитесь, что при добавлении изображения в раскадровку имя изображения в верхнем левом углу также соответствует реальному имени файла изображения. Я бы тоже попробовал изучить ограничения. Надеюсь это поможет. Удачи в вашем приложении.


2

Я потратил часы на эту проблему, прежде чем, наконец, осознал свою ошибку. Когда вы добавляете изображение в UIImageView, оно будет использовать только имя изображения. Если ваши изображения находятся в папке, отличной от раскадровки, они будут отображаться в xcode, но не при запуске приложения. Вы должны добавить соответствующий префикс пути к файлу, например, images / image.png. Теперь он будет отображаться как синий знак вопроса в xcode, но он будет работать в приложении.


2

Просто чтобы добавить мои $ 0,02 к этому вопросу; Я решил это, используя изображения PNG вместо изображений JPG / JPEG.

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


2

Потратив много времени, я получил решение:

Step 1:- Quit Xcode
Step 2:- Delete the app from device/simulator
Step 3:- Restart your device (if you are using simulator then you have to quit simulator)
Step 4:- Clear all derived data 
Step 5:- Clear Bin
Step 6:- Open Xcode and relaunch the app, it will work 

это сработало для меня, спасибо
Дилип Тивари

@DilipTiwari, добро пожаловать :)
Vipul Kumar

1

Я столкнулся с той же проблемой. Пробовал разные решения для этого, но ничего не помогло. Затем я понял, что изображение не было видно только тогда, когда я непосредственно установил приложение на устройство, и приложение все еще подключено к xcode. Если я отключу его, а затем открою приложение, изображение было видно, как ожидалось. Это может быть ошибка xcode.


1

Я попытался очистить проект, удалив png, сняв ограничения, у меня не получилось.

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

Также я не использую Assets.xcassets, используя изображение в папке.


1

Я пробовал так много вещей с этим (одна только эта тема, кажется, имеет миллион идей, и половина из них противоречива). Проблема для меня заключалась в том, что когда я делал такие вещи, как перезапуск устройства и Xcode, это приводило к тому, что изображение показывалось в течение нескольких сеансов приложения, а затем останавливалось (я понятия не имею, почему, но ВАУ это раздражало) ,

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

Чтобы уточнить, что вы должны сделать, это создать новый набор изображений и назвать его что-то вроде «Launch-Defaults», а затем добавить свои изображения к нему. Затем в UIImageView внутри раскадровки вы используете изображение «Launch-Default» (не включая расширение, поскольку его нет, так как это набор изображений).

Когда вы делаете все это, изображение должно правильно отображаться внутри вашей раскадровки. Некоторые люди говорят, что изображение будет отображаться пустым, если вы не используете расширение (.jpg или .png), но я предполагаю, что это потому, что они не используют имя набора изображений. Другие говорят, что вам нужно использовать расширение, например .png или .jpg, но главное - создать набор изображений внутри xcassets, а затем использовать этот набор изображений внутри раскадровки. Если все сделано правильно, не должно быть никаких забав, таких как изображение, которое не отображается, или экран запуска, работающий только некоторое время (требующий перезагрузки).


1

В моем конкретном случае заставка работала для симулятора и других устройств, но перестала работать для одного конкретного устройства. Это привело меня к мысли, что это были некоторые данные кэширования, хранящиеся в xcode (v10 и iPhone 7 v12.1).

Я удалил производные данные по адресу: ~/Library/Developer/Xcode/DerivedData/только очистка содержимого папки, но не удаление папки. Затем я перезагрузил Mac и iPhone, очистил и перестроил проект, и теперь он появляется.

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


1

Моя проблема.

Причина: я переименовал изображения после перетаскивания в Xcode. Решение: не переименовывайте изображения после перетаскивания в Xcode. Это создает проблемы для понимания Xcode. Переименуйте изображения перед перетаскиванием / добавлением в Xcode.

Надеюсь, это поможет вам!


0

Я только что понял это. Изображение при запуске не отображается, при запуске на устройстве (iPhone 6, 7+) или testFlight появляется белый экран. Исправлено: Переименовано в «Landing_screen.png», чтобы просто «Landing_screen» удаляло часть .png. Значок изображения в XCode изменился на белый значок, и в раскадровке экрана запуска изображение теперь появляется как вопросительный знак. Теперь появляется изображение запуска, а не белый экран. Мои настройки: я использую Swift 3.1 с Xcode 8.3.1. В LaunchScreen.storyboard я добавил простой вид изображения и растянул изображение, чтобы оно соответствовало контроллеру вида. Я установил автоматические ограничения макета Top / Bottom / Leading / Trailing space на superview на 0 - см. Изображение ниже:

введите описание изображения здесь


0

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


0

Это происходит из-за кеширования в XCode / iOS, но есть простое решение: просто переименуйте файл в Assets.xcassets, чтобы кэш восстановился.


0

Моей первой ошибкой было то, что я создал нормальную .storyboard, переименовал ее и определил как экран запуска в настройках проекта. У меня в этом случае были проблемы с изображением. Кажется, что в этом случае некоторые настройки отсутствуют, поэтому я просто создал новый файл через file-> new и выбрал непосредственно «Launch Screen», и тогда это сработало.

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

Может быть, это кому-нибудь поможет.


0

Я столкнулся с этой же проблемой при использовании launch-storyboard для показа заставки, и после исследования я обнаружил, что изображение, которое я установил в launch-storyboard, имеет другой размер, и я установил просмотр изображения больше, чем фактический размер изображения.

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

Например, если размер вашего изображения @ 1x равен 200X200, тогда размер изображения должен быть 200X200, чем вы решите эту проблему.

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

Если у вас все еще есть сомнения, пожалуйста, прокомментируйте здесь и спросите

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.