it-swarm.com.ru

UIImageView отсутствующих изображений в Launch Screen на устройстве

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

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

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

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

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

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

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

  • Я подтвердил, что настройки UIImages для логотипа и заставки в файле xcassets одинаковы. Для них установлено значение Универсальный, Любая ширина и высота, несколько масштабных коэффициентов, отображаемых по умолчанию. Есть одно отличие - логотип имеет масштаб 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, которые имеют связанные классы, ни один из которых не представляется здесь уместным.

287
MFW

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

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

Вот что не сработало:

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

Старые наблюдения:

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

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

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

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

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

ОБНОВЛЕНИЕ: см. Верх - перезапуск устройства - это то, что исправило У меня такое ощущение, что на самом устройстве кешируются неправильные растровые данные.

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

457
Aral Balkan

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

 enter image description here

142
NikLanf

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

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

Я не могу понять, почему это не работает, но я нашел решение: Просто поместите ваш файл за пределы вашего images.xcassets и используйте его полное имя (с расширением) в Интерфейсном Разработчике

 splashScreen in storyboard sample

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

94
gbitaudeau

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

  1. Очистите свою сборку (⌘ + ⇧ + K)
  2. Закрыть Xcode
  3. Устройство iOS с полной перезагрузкой (перезагрузка с кнопкой Power + Home)
  4. Перезапустите Xcode - дайте индексированию завершиться и соберите устройство, как только оно будет готово.
32
mayankk2308

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

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

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

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

Фон

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

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

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

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

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

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

Решение

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

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

 screenshot of relevant directories in Project Navigator in Xcode

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

 screenshot of Image View section for UIImageView under Attributes Inspector in Xcode

26
andrewbuilder

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

20
Bruce L

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

15
Petro Shm

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

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

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

8
Jim Rhoades

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

7
Jakub Truhlář

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

 Reset content and Settings menu

7
andnil

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

6
Trinh Tran

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

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

  • Удалить данные с диска

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

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

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

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

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

5
guozqzzu

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

Сначала в xcode clean de project.

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

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

4
oscar castellon

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

4
bonnie lapin

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

4
Sunly

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

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

3
Asha Antony

Казалось, ошибка iOS. Вроде иногда пропала анимация системы.

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

2
Amon

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

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

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

2
de.

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

 enter image description here

2
SwiftDeveloper

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

2
KING

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

2
midhun p

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

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

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

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

1
JamieDass

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

1
ostap_holub

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

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

1
Jesse

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

1
Tim Le

РЕШИТЬ!

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

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

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

1
Breno Medeiros de Oliveira

Следующее помогло мне:

  • замените «Файл экрана запуска» на другой xib
  • запустить приложение
  • Правка XIB назад

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

1
Vladimir Tolstikov

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

1
Aproram

Я также столкнулся с этой проблемой. Стирание всего контента и настроек SIMULATOR работало на меня.

0
skyecloude

В моем случае я просто захожу в приложение ЦЕЛИ -> Общие -> Значки приложений и запуск изображений -> Запуск источника изображений Затем выберите источник, куда я помещаю изображения Надеюсь, это поможет вам

0
Hoang Quan

Для меня проблема была в том, что размер моего Launchscreen был отключен на 1 пиксель (2209x1242 вместо 2208x1242). Исправление, затем перезагрузка устройства и восстановление приложения помогли.

0
gklka

Я нашел простое, но радикальное решение, которое сработало для меня:

1 - Удалите файл: LaunchScreen.storyboard и переместите его в корзину.

2 - Продукт -> Чистый

3 - Создайте новый файл экрана запуска с именем: LaunchScreen.storyboard и поместите в него ваши изображения

4 - Сохранить и построить

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

0
Fox5150

«myProject» со многими изображениями, инициированными из Images.xcassets. Но я столкнулся с отсутствующими изображениями после удаления и восстановления «Assets.xcasset» из проекта. 

  1. Удаление Images.xcassets случайно, но 
  2. Добавление Images.xcassets обратно в «myProject» 

Я столкнулся с этой проблемой отсутствующих изображений и попробовал следующие методы: 

  1. Перезапустите устройство, но оно не работает. 
  2. Использование XCode для «сборки» проекта после «очистки», и он тоже не работает. 

Решение, чтобы исправить мою проблему: 

  1. Добавил каждое изображение внутри Images.xcassets обратно в «myProject» через Xcode в «Target Membership» в «Show in File Inspector», и оно вернулось в нормальное состояние. 
0
Wang3t

Выберите файл изображения в левом меню, выберите «показать инспектор файлов» в правом меню «Утилиты». Под целевым членством убедитесь, что ваша цель выбрана. Я добавил изображение с выбором цели, но не знаю, почему она не была выбрана. Я перепробовал все решения, перезапуск, удаление и т.д. Никто не работает. Просто это сработало. Надеюсь, это поможет кому-то еще.

0
nfinfu