UIImageView отсутствует изображение в окне запуска на устройстве

У меня есть приложение, поддерживающее iOS8 и более поздние версии, встроенное в Xcode 7, и я использую XIB для запуска экрана (у меня нет изображений запуска). В представлении содержится один UILabel с версией приложения и 2 UIImageView с изображениями, которые присутствуют в Images.xcassets: логотип и всплывающее изображение.

UILabel и изображение логотипа отображаются правильно, когда я запускаю приложение, но заставка не работает, если я запускаю приложение на iPad Air 2 с iOS9. Я тестировал на Air и Mini iOS8 и iOS9 для iPad 2, iPad Air и iPad Air 2, и изображение получилось правильно во всех этих случаях.

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

Вот краткое изложение того, что я знаю:

  • UIImageView для изображения всплеска находится в правильном месте, в правильном размере. Я могу сказать это, потому что я установил цвет фона зеленым, чтобы убедиться. Вид есть, но изображение не появляется. Поэтому я предполагаю, что мнение не виновато.

  • Настройка UIImageView для изображения всплеска, чтобы также использовать изображение логотипа, делает изображение логотипа отображаемым в правильном месте для представления. Это также заставляет меня предположить, что взгляд не виноват.

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

  • Я подтвердил, что настройки UIImages для логотипа и всплеска в файле xcassets одинаковы. Они имеют значение Universal, Любая ширина и высота, множественные масштабные коэффициенты, отображаемые по умолчанию. Существует одно отличие: у логотипа есть шкалы 1x, 2x и 3x, в то время как изображение всплеска имеет только 1x и 2x, но я также пытался использовать UIImages только с 1x и 1x и 2x значениями в UIView, и они работают (если они были добавлено в проект некоторое время назад).

  • Добавление другого изображения другого размера или формата (PNG и JPG) в мои xcassets и использование этого UIImage в UIImageView для всплывающего изображения также не отображается.

  • Добавление другого файла UIImageView в XIB файл и выделение его UIImage, который уже был на xcassets, отображается на экране загрузки.

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

  • Я пробовал очистить проект, перезапустить машину разработки и удалить приложение из Air 2 и переустановить его на случай, если это будет проблемой.

Эти последние три шага заставляют меня поверить, что некоторые проблемы с изображениями добавлены после определенного момента в жизненном цикле проекта. Хотя я обновился до Xcode 7 вчера, заставка была первоначально добавлена ​​в Xcode 6, но изображение логотипа (также добавленное в Xcode 6) было добавлено несколько месяцев назад.

Я просмотрел файлы json для изображения логотипа и изображения брызг, и они, похоже, имеют тот же формат. Я также трался через файл pbxproj, ищущий различия, и я не вижу ничего.

Итак, мне было интересно, есть ли у кого-нибудь идеи, почему экран запуска может не отображать эти новые изображения, которые я добавляю в Air 2 конкретно? Другие вопросы, которые я читал, связанные с изображениями, которые не отображаются, как представляется, связаны либо с Launch Images, либо с изображениями в XIB файлах, которые имеют связанные классы, ни то, что кажется здесь актуальным.

Ответ 1

Включить, если выключено и снова включено.

Серьезно, перезагрузите устройство - вот что исправил его для меня.

Heres, что не работает:

  • Очистка данных DerivedData​​li >
  • Очистка проекта
  • Удаление приложения с устройства
  • Перезапуск Xcode
  • Перезапуск компьютера

Предыдущие наблюдения:

Как и другие, он:

  • Прекрасно работает в симуляторе
  • Используется для работы с устройствами (iPhone 5S, iPad Air)
  • Никаких изменений кода (проверено с помощью git reset --hard HEAD), но не работает.

Я помню, что запуск первой сборки там, где она перестала работать, отключила iPhone, пока он запускался. (Не уверен, если это связано.)

Однако git reset не исправляя его (в сочетании со всеми чистыми шагами не работает) говорит мне, что это должно быть кэширование где-то в другом месте. Возможно, в одном из .gitignored файлов? (Im использует Git игнорировать файл для проектов Xcode)

Один обходной путь, который работал для одного UIImageView (в UIView, который имеет три), но не для других, помещал изображение в файл .xcassets. Возврат к файлу обычного изображения не отменил исправление. (Действительно чувствует себя как ошибка кэширования.)

UPDATE: см. top - перезагрузка устройства - это исправление. Я чувствую, что неправильные данные растрового изображения кэшируются на самом устройстве.

Радар: http://openradar.appspot.com/23534818

Ответ 2

"Решение для меня состояло в том, чтобы убедиться, что поле" Очистить графический контекст "не отмечено для UIImageView в раскадровке. Просто изменив это, я установил это для меня". Никакие другие решения не работали для меня. Получил его от форум разработчиков Apple

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

Ответ 3

У меня была точно такая же проблема на iPhone 6.

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

Я не могу найти, почему это не работает, но я нашел решение: Просто поместите свой файл вне своих изображений .xcassets и используйте его полное имя (с расширением) в Interface Builder

splashScreen в образце раскадровки

Надеюсь на эту помощь!

Ответ 4

Следующая последовательность операций устранила проблему для меня на Xcode 7.3.1 и iOS 9.3.4:

  • Очистите свою сборку (⌘ + ⇧ + K)
  • Закрыть Xcode
  • Жесткое устройство Reset iOS (перезагрузка перезагрузок Power + Home)
  • Перезапустить Xcode - разрешить индексирование и построить устройство после его готовности.

Ответ 5

Многие другие ответы предлагают перезагрузить устройства и/или перестроить и/или переустановить решение.

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

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

Этот ответ SO @от @jaga предоставляет решение, но не причина, почему UIImageViews отсутствуют на экране запуска на устройстве (но не в симуляторе).

Фон

Недавно я попытался использовать собственный шрифт в файле "Launch Screen.storyboard".

Причина, по которой я не мог понять, после чтения этого SO-ответа от @TimCamber, что побудило меня сделать немного больше исследований и испытаний.

Причина того, что пользовательский шрифт не включен в мой файл растрового экрана запуска, по той же причине, что изображение в каталоге активов не включено...

Приложение готовит портретные и альбомные снимки приложения Launch Screen из вашего файла раскадровки экрана запуска и (в настоящее время) сохраняет его в вашем комплекте приложений здесь:

  • /Library/Caches/Snapshots/<<app_bundle>>/ и
  • /Library/Caches/Snapshots/<<app_bundle>>/downscaled/.

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

Решение

Как упоминалось выше, после решения @jaga, буквально все, что требуется, это:

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

снимок экрана соответствующих каталогов в Project Navigator в Xcode

  1. ссылается на это изображение в вашем объекте UIImageView в Launch Файл раскадровки экрана...

снимок экрана раздела

Ответ 6

Я видел ту же проблему. Перезагрузка устройства (iPhone 6) и перестройка приложения на устройство - единственное, что его исправило. Я попробовал много других советов и предложений, но ничего больше не сработало. Помогла поддержка только reboot + rebuild.

Ответ 7

У меня было то же самое для приложения, установленного из TestFlight. Удалить приложение → затем перезагрузить iPhone → затем переустановить приложение работает для меня. Просто переустановить приложение или просто перезапустить устройство не помогло.

Ответ 8

Мое решение @iOS 11.x:

  • Используйте изображение .jpg вместо .png. Я думаю, что размер файла изображения имеет значение;
  • (Необязательно) Поместите файл изображения в каталог проекта, а не в .xcassets;

Ответ 9

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

Ответ 10

Вы пытались выключить и снова включить устройство? Сделай это.

Ответ 11

Что сработало для меня, так это выбрать Reset Контент и настройки... из меню Simulator

Reset контент и меню настроек

Ответ 12

Извлеките изображения из Image.xcassets и добавьте их снова в проект. Это сработало для меня.

Ответ 13

Я использую устройство iPhone 5s, также встречаю эту проблему.

Я исправлю это:

  • Удалить данные привода

  • Очистите проект

  • Перезапустить Xcode

  • Удалите проект с моего устройства

  • Перезапустите 5s.

Я думаю, что что-то не так, как Xcode для использования памяти, система может выделять небольшую память для Xcode, потому что Xcode не рисует изображение обеда (на моем компьютере Xcode запускался несколько недель без закрытия)

Ответ 14

У меня также была эта точная проблема в Xcode 7 с iPad и iPhone. Хотя это не имеет никакого смысла, я мог обойти его большую часть времени, установив не только изображение, но также и выделенное изображение в изображении на одно и то же изображение на моих изображениях .xcassets.

Ответ 15

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

Ответ 16

это сработало для меня.

Сначала в xcode очистите проект.

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

Если вы используете устройство, удалите приложение и перезапустите устройство.

Ответ 17

Выберите ImageView, а затем удалите расширение изображения (.png или .jpg) на вкладке "Инспектор атрибутов" > "Вид изображения" > "Изображение" > "Название изображения".

В окне launchscreen.storyboard изображение не появится, но оно появится на устройстве. Это сработало для меня.

Ответ 18

Перезапуск Xcode сделал это для меня.

Что сделал не:

  • Очистить папку сборки
  • Перезагрузите устройство или симулятор (изображение также не было видно)

Ответ 19

Это казалось ошибкой iOS. Как и иногда, анимация системы исчезла.

Теперь я просто перезагружаю iPhone, и он работает для меня.

Ответ 20

Это слишком важно Должно быть пустым ! Launch Screen File

enter image description here

Ответ 21

В моем случае я был изображением.
Я добавил изображение с именем [email protected] в LaunchScreen.xib - один из моих старых экранов запуска только для целей тестирования. Я строил на iPhone X Simulator, изображение не появилось.

Изменение имени на что-то нейтральное (MyImage.png) решило проблему.

Кажется, что @2x был частью проблемы, а также -568h. Что имеет смысл в устройстве [email protected].

Ответ 22

Простое решение - использовать JPG вместо PNG.

Ответ 23

Удалите приложение с мобильного, а затем перезапустите мобильное и установите приложение снова. теперь вопросы будут решены

Ответ 24

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

Ответ 25

Также можно: 1. удалить изображение проекта 2. изменить имя изображения 3. добавить файл в проект

Это сработало для меня.

Ответ 26

Далее помог мне:

  • измените "Запустить файл экрана" на другой xib
  • запустите приложение
  • изменить xib назад

Также очень важно: убедитесь, что ваш xib не открыт на другой вкладке, что также может вызвать его.

Ответ 27

У меня была эта проблема в iOS 10 на iPhone 6, а также в Simulator. Мое изображение было в папке, и это, похоже, было проблемой. Я удалил изображение из папки в Xcode и поместил его в базовый каталог проекта, который решил проблему.

Ответ 28

Я испытываю то же самое. Я меняю разрешение изображения с 300 пикселей/дюйм, меняю его на 72. Он работает для меня.

Ответ 29

Название изображения является проблемой. Переименуйте имя изображения, используемое в раскадровке экрана запуска. Убедитесь, что вы не используете какой-либо символ, кроме буквенно-цифровых символов (не используйте "_- & @")

Ответ 30

РЕШИТЬ!

Единственное, что мне ViewController - это удалить ViewController из LaunchScreen.storyboard и создать новый ViewController установлено значение

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

Просто как тот :)