Изображения не отображаются на устройстве iPhone

#ios #iphone #xcode #image #swift

#iOS #iPhone #xcode #изображение #swift

Вопрос:

(Xcode6, сборка для iOS7.1, iPhone 4S, Swift)

Изображения отображаются в симуляторе, но не на устройстве. Я возился и взламывал, пытаясь найти волшебную формулу, но безуспешно. Вот мои усилия на сегодняшний день:

Имя файла: abc@2x.png , abc.png. Перетаскивание изображения на раскадровку и указание имени файла через выпадающее меню «изображение» в «Инспекторе атрибутов». Все символы в именах файлов указаны в нижнем регистре.

  • Перетаскивание файлов в папку images.xcassets
  • Проверено, что images.xcassets раздел «Копировать ресурсы пакета» в «Настройках сборки»

Не повезло. Удаленные файлы. Повторно добавлено с помощью кнопки » » в левом нижнем углу и выбрано «Добавить файлы в MyProject»

  • Проверено «Копировать элементы при необходимости».
  • Проверено «Создавать группы»
  • Проверено, что файлы были в разделе «Копировать ресурсы пакета» в «Настройках сборки»

Не повезло. Удаленные файлы

  • Повторно добавлено с помощью кнопки » » в левом нижнем углу и выбрано «Добавить файлы в MyProject»
  • Проверено «Копировать элементы при необходимости».
  • Выбран переключатель «Создать ссылки на папки»
  • Проверено, что файлы были в разделе «Копировать ресурсы пакета» в «Настройках сборки»

Не повезло. Удаленные файлы

  • Зашел в GIMP и изменил формат файла на .jpg

    1. Повторите описанные выше действия с файлом .jpg.
  • Перетащил новое изображение в контроллер просмотра и установил изображение для этого контейнера, используя выпадающее меню.

Все еще не повезло

  • Несколько раз удалял приложение с телефона, чтобы обеспечить чистую установку.

По-прежнему безуспешно.

  • Проект -> «Очистить»
  • Проект -> «Сборка»
  • Перезапущенный Xcode

По-прежнему безуспешно. Есть идеи?

Если я кому-то нужен, просто найдите парня, бьющегося головой о свой стол. :/

Комментарии:

1. загружается ли изображение при программной загрузке? var image = UIImage(named: "abc") println(image)

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

3. Я бы попробовал использовать папку Xcode images.xcassets вместо прямого добавления изображений в пакет. Тем не менее, это может быть ошибка Xcode 6. Вы пробовали добавить его в пакет в Xcode 5, а затем повторно открыть проект в Xcode 6?

Ответ №1:

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

 abc.png to a.png
abc@2x.png to a@2x.png
  

Я уверен, что это решит вашу проблему.

Ответ №2:

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

Для потомков:

I. В раскадровке удалите ссылку на image в Attributes Inspector . Там должна быть какая-то ошибка. Это не работает, и это нарушит приведенный ниже код.

II. Создайте IBOutlet из представления изображения на свой контроллер. Вы должны сделать это с помощью ctrl drag и удерживать. В итоге должно получиться что-то вроде этого:

 @IBOutlet var cheese : UIImageView = nil
  

III. В вашей viewDidLoad() процедуре установите изображение программно, вот так:

 override func viewDidLoad() {
    super.viewDidLoad()
    self.cheese.image = UIImage(named: "cabotClothbound.jpg")
}
  

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

Файл .jpg, который был перетащен в Images.xcassets , — это тот, который работал.

Ответ №3:

У меня была такая же проблема, но я решил ее. Изображение (фактически, значок) должно быть не в Reosurces.bundle, а в Assets.xcassets.