#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
- Повторите описанные выше действия с файлом .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.