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

162

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

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

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

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

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

shadowarcher
источник
1
Убедитесь, что ваше изображение в правильном формате PNG . не JPG, если это так.
Уткарш Сингх
Проверьте это stackoverflow.com/a/49802421/5790492
Ник Ков
3
Тот факт, что множественные, совершенно разные ответы имеют много голосов, очень и очень печален.
Даниэль Спрингер
1
Возможно ли, что если изображение слишком большое и время его загрузки занимает слишком много времени, оно удаляется с экрана запуска?
Lubbo
@ Лаббо, я думаю, в этой теории есть что-то. У меня есть вид запуска, который имеет большое и маленькое изображение, маленький загружается нормально, а большой - нет. Маленькое изображение в xcassets и большое изображение, которое я пробовал как в файле ресурсов, так и вне его.
Том Бейтс

Ответы:

327

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

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

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

  1. Быстро нажмите и отпустите кнопку увеличения громкости
  2. Быстро нажмите и отпустите кнопку уменьшения громкости
  3. Нажмите и удерживайте боковую кнопку, пока не появится логотип Apple
Flexicoder
источник
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) - вот и все.

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

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

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

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

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

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

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

Crashalot
источник
17

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

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

Shumin
источник
Это не дает ответа на вопрос. Как только у вас будет достаточно репутации, вы сможете комментировать любой пост ; вместо этого предоставьте ответы, которые не требуют разъяснений от автора . - Из Обзора
Адам Ричардсон
Мне жаль, @AdamRichardson, он дает ответ и правильный тоже, и это был мой случай. Мне просто нужно было просто перезапустить телефон / симулятор.
Кегам К.
Я потратил 16 часов, пытаясь решить эту проблему, и, наконец, перезагрузка телефона сделала свое дело.
Кришнан
2
Бьюсь об заклад, кто-то из Apple, который мог бы это исправить, должен подумать: «О, им просто нужно перезагрузить свои телефоны - это не так, как это влияет на сборки релизов или что-то в этом роде. Мы можем оставить эту задачу на потом».
Динешарджани
В конечном итоге это
Тейлор Максвелл
12

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

Рейнир Мелиан
источник
2
Это единственное решение, работавшее до сих пор. Перезапуск xcode, очистка производных данных, изменение имени изображения не сработало. Я не рекомендую перезапускать устройство в качестве решения для всех
NightFury
эта ошибка так же стара, как создание xcassets. Я мысленно заполнил его в своей папке "вещи, которые яблоко никогда не решит".
Утка
8

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

Тарек
источник
7

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

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

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

AG
источник
5

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

Entro
источник
5

Перезагрузите ваше устройство и удалите данные, полученные из x-кода

Маулик Патель
источник
3

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

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

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

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

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

марал
источник
3

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

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

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

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

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

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

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

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

Kampai
источник
1
ты спас мой день!
Камбала
2

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


источник
2

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

Prime624
источник
2

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

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

Gee.E
источник
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, очистил и перестроил проект, и теперь он появляется.

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

zkon
источник
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, поэтому у меня возникли проблемы с их поиском.

Gujamin
источник
0

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

thatmarcel
источник
0

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

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

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

Тим Кристманн
источник
0

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

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

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

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

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

Хардик Вьяс
источник