Как я могу добавить файлы JPEG в каталог активов в Xcode?

Можно ли добавить активы, отличные от файлов PNG, в каталог активов Xcode?

Когда я перетаскиваю файлы JPEG в каталог активов, пользовательский интерфейс не принимает их.


person David Snabel-Caunt    schedule 13.09.2013    source источник


Ответы (6)


Вы можете добавить ресурсы не в формате PNG, отредактировав представление ресурса в формате JSON вручную. Самый простой способ - скопировать существующий актив и изменить его:

  1. Щелкните правой кнопкой мыши существующий актив и выберите Показать в Finder.
  2. Скопируйте и вставьте существующий элемент .imageset и переименуйте его, например my_image.imageset
  3. Дважды щелкните новый .imageset
  4. Удалите все существующие изображения в папке
  5. Скопируйте в свои файлы JPEG
  6. Отредактируйте файл Contents.json, заменив значения ключа filename именами файлов в формате JPEG.

Ваш Contents.json будет выглядеть примерно так:

{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x",
      "filename" : "my_image.jpg"
    },
    {
      "idiom" : "universal",
      "scale" : "2x",
      "filename" : "[email protected]"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

Обязательно ссылайтесь на свое изображение по имени, без расширения:

[UIImage imageNamed:@"my_image"]

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

person David Snabel-Caunt    schedule 13.09.2013
comment
Ничего не стоит то, что полученные изображения ЯВЛЯЮТСЯ png;) То есть, если кто-то хотел уменьшить занимаемое пространство (используя JPEG вместо PNG), он не работает с Каталогом активов - или я еще не нашел способ: ) - person StuFF mc; 07.11.2013
comment
У меня есть расширение PNG, но на самом деле это не PNG и не увеличивается в размере. identify test.png показывает test.png JPEG 320x838 320x838+0+0 8-bit sRGB 10.4KB 0.000u 0:00.000 В настройках моего проекта для параметра «Сжатие файлов PNG» установлено значение НЕТ. - person David Snabel-Caunt; 07.11.2013
comment
можно ли иметь анимированный гиф? (извините, я спрашиваю, как вы упомянули о гифках) - person Julian; 27.06.2014
comment
Звучит как уродливый и хрупкий хакер. - person Nikolai Ruhe; 25.08.2014
comment
Похоже, это работает для iOS 8, но не для iOS 7, для параметра Render As установлено значение Original Image :( - person Pavel Alexeev; 05.02.2015
comment
Это правильный подход. Однако imageNamed: без расширений .jpg будет загружать JPG только в том случае, если минимальная цель развертывания - iOS 8 или новее. Я недавно обнаружил это сам, и вы можете прочитать больше в моем ответе здесь stackoverflow.com/questions/33250182/ - person Andriy Gordiychuk; 21.10.2015

Начиная с Xcode 6.1 изображения JPG теперь можно добавлять в каталог ресурсов. Шаги, которые нужно добавить:

  1. Экспортируйте свой JPG с желаемым качеством, используя те же соглашения об именах, что и для PNG (т.е. heart.jpg [email protected] [email protected])
  2. Перетащите JPG-файлы в свой каталог активов из Finder и добавьте в актив любые настройки соединения или устройства.
  3. Измените «Рендеринг как» на «Исходное изображение» для всех файлов JPG (в противном случае они будут отображаться пустыми в симуляторе и на устройстве)
person Kevin Sylvestre    schedule 30.10.2014
comment
Шаг 3: изменение рендера на «исходное изображение» помогло мне. Пока я не внесу это изменение, изображения не будут отображаться в симуляторе или на устройстве. Любой, кто ищет этот вариант - он указан рядом с именем, устройствами, шириной и высотой и т. Д. В xcode. - person Paul Sturgess; 06.01.2015
comment
Будет ли экспортированный IPA содержать JPG или PNG? Я вижу, что он содержит PNG, даже если я добавляю jpg с исходным изображением. - person rounak; 16.01.2019

Похоже, теперь вы можете перетаскивать файлы JPEG в Xcode 6.0 Beta.

person onbek    schedule 27.06.2014
comment
Спасибо за этот @onbek - немного смешно, что до сих пор мы не могли включить JPEG - person amergin; 30.06.2014
comment
К сожалению, этой функции нет в официальном Xcode 6.1. Я не могу импортировать jpg в активы, и если я принудительно вставлю его в актив, изображение в симуляторе окажется пустым. - person hlynbech; 24.10.2014
comment
@hylnbech У меня была такая же проблема. Попробуйте изменить «Рендеринг как» в инспекторе на «Исходное изображение». См. Мой ответ для получения более подробной информации - person Kevin Sylvestre; 31.10.2014
comment
В качестве примечания, эта функция, похоже, не работает с Xcode 7.0. Все изображения с расширениями .jpg, которые ранее работали в Xcode 6, теперь не загружаются с '[UIImage imageNamed:]'. - person user3847320; 18.09.2015

В Xcode 6.x вы можете перетаскивать jpeg-файлы в каталог ресурсов. При создании UIImage из актива убедитесь, что вы используете расширение .jpg следующим образом:

[UIImage imageNamed:@"myimage.jpg"];

Если расширение не включено, изображение будет просто белым / пустым.

person gavdotnet    schedule 09.11.2014
comment
Загружаются ли изображения в правильном масштабе для каждого устройства? - person Rivera; 22.12.2014
comment
Не захотят ли оппоненты выступить с конструктивной критикой? - person gavdotnet; 22.09.2015

Вы также можете переименовать свой image.jpg в image.png, если вы не хотите изменять файл Contents.json. Затем вы можете добавить изображения в каталог ресурсов, даже если внутри они все еще являются файлами jpeg. Вы даже можете разрезать их с помощью Xcode.

Когда приложение скомпилировано, все ресурсы попадают в файл Assets.car. Я не проверял, конвертируются ли они на данный момент в png.

person Carlos Parada    schedule 27.03.2014

Попробуй это. Быстро импортируйте сценарии ресурсов, чтобы решить проблемы, связанные со скоростью импорта и переименованием. https://github.com/qdvictory/happyxcasset

person Seamus    schedule 09.07.2017