Xcode 6 позволяет VECTOR изображения активов... как их использовать?
Я возился с активами Xcode 6 против изображений, когда заметил что-то очень интересное: теперь мы можем указывать на них векторные изображения (перейдите к панели утилит после выбора Images.xcassets).
Я попробовал небольшое приложение (содержащее большой UIImageView) с изображением .SVG (не работало), затем .EPS (тоже не работало), и я наконец попробовал .PDF Это сработало! Ну, хотя я видел изображение, оно оказалось пиксельным, а не векторизованным.
Так что, похоже, Apple готовит почву для векторных иконок/изображений. Нет больше миллиардов версий значков приложений, больше изображений "@2x". Но может ли кто-нибудь разблокировать эту функцию?
Ответы
Ответ 1
Вот некоторые из моих мыслей после некоторых экспериментов по векторным ресурсам:
1. Поддержка времени компиляции
После нескольких испытаний я считаю, что это просто поддержка времени компиляции. Xcode генерирует все изображения 1x, 2x и 3x во время компиляции. Это означает, что он работает со старыми версиями iOS. В то же время это означает, что в финальной сборке он все еще находится в формате PNG, и вы не можете получить изображение без потерь с векторного файла.
2. Почему PDF вместо SVG или других форматов
Для SVG и других форматов векторное изображение не имеет информации о фактическом размере, а в формате PDF - информация о размере. Я думаю, что Xcode 6 использует информацию о размере в формате PDF в качестве фактического размера, а затем генерирует 2x 3x файлы из векторного изображения.
![Size info in PDF]()
3. Размер файла PDF не имеет значения
В начале мы обеспокоены тем, что PDF файл будет намного больше, чем PNG. Мы попробовали http://smallpdf.com/, чтобы сжать его, и он работает очень хорошо. Но если исходный файл PDF не включен в сборку, как я уже говорил, размер файла PDF не имеет значения.
Будет продолжать редактирование этого сообщения, если найду что-нибудь другое.
РЕДАКТИРОВАТЬ 14-09-25
@mredig упомянул, что для iOS он генерирует растровые изображения во время компиляции, но для OSX он включает в себя векторное изображение в масштабируемой форме.
через: http://martiancraft.com/blog/2014/09/vector-images-xcode6/
Ответ 2
Вот как можно поэкспериментировать с векторными изображениями в каталоге ресурсов в Xcode 6:
Создайте новый набор изображений.
Выберите пустую ячейку изображения в наборе изображений и переключите всплывающее окно в инспекторе атрибутов на "Векторы". Теперь у вас есть один универсальный слот для изображений.
Перетащите векторный PDF в этот слот.
Теперь, где бы ни использовалось это изображение, оно масштабируется по своему контексту (например, представление изображения фиксированного размера) без растеризации, как показано на этом снимке экрана:
![enter image description here]()
РЕДАКТИРОВАТЬ Несмотря на этот ответ, рисунок в формате PDF был растеризован. Но теперь смотрите fooobar.com/questions/42263/...: в Xcode 9 векторный PDF масштабируется правильно, без растеризации.
РЕДАКТИРОВАТЬ В Xcode 11 эта формула работает: в каталоге активов вы должны установить всплывающее меню "Масштаб" на "Индивидуальные шкалы" и поместить векторное изображение в слот 1x. Установите флажок Сохранить векторные данные. Готово.
Ответ 3
вы можете использовать этот онлайн-инструмент для конвертации изображений из svg в pdf
http://www.fileformat.info/convert/image/svg2pdf.htm
1- загрузить изображение
2- выберите ширину: 24px, высота: 24px
3- копирование в проект xcode
4- перейдите к Images.xcassets
5- щелкните правой кнопкой мыши и создайте новый набор изображений
6- с правой панели выберите (инспектор атрибутов)
7- изменить типы на вектор
8- перетащите свой pdf файл там
9 - используйте его в своем проекте
Ответ 4
один совет - создайте разрешение PDF @2x и имя файла с помощью @2x ([email protected])
сделайте это, и вы получите идеальные точные и контрастные изображения, специально для iPad 2 и mini.
![введите описание изображения здесь]()
Ответ 5
Я просто создаю пользовательский шрифт, скажем, значки или даже логотипы приложений, и использую его таким образом и вытаскиваю его в свое приложение. Я могу настроить размеры шрифтов для устройств и разрешения экрана очень легко.
Ответ 6
Если вы ищете ответ на вопрос: "Как я могу использовать векторную графику в своем приложении iOS и всегда масштабировать их с прекрасным совершенством?", то я могу настоятельно рекомендовать UIImage+PDF
из https://github.com/mindbrix/UIImage-PDF
Я считаю, что это работает совершенно блестяще. Вместо того, чтобы иметь все изображения в формате PNG из трех разных разрешений, у меня теперь есть маленький маленький PDF файл для каждого изображения. Я могу отобразить их следующим образом:
// Objective C:
self.icon.image = [UIImage imageWithPDFNamed:@"icon.pdf" fitSize:self.icon.frame.size];
// Swift:
icon.setImage(UIImage(PDFNamed: "icon.pdf", fitSize: icon.frame.size))
В дополнение к fitSize:
также есть atWidth:
, atHeight
и atSize:
.
Я использую UIImage+PDF
для всех изображений, которые могут быть векторизованы, и используйте только PNG для фотоизображений.
Я также запускаю свои файлы PDF с помощью http://smallpdf.com/compress-pdf, чтобы обеспечить наименьшие размеры файлов для них.
Эрик
Ответ 7
В тех случаях, когда вы создаете значки приложений, PDF не будет работать. Возможно, вы захотите взглянуть на проект, который я только что создал, который называется Speculid. Он может создавать PNG, PDF и т.д. Из исходных изображений, включая файлы SVG. Обратная связь будет принята с благодарностью.