Не включая изображения без сетчатки в проекте iPhone - PullRequest
4 голосов
/ 07 января 2012

У меня есть проект iPhone Xcode, который в настоящее время содержит только изображения для отображения сетчатки (в два раза больше обычного размера и с суффиксом @ 2x.png).Когда я запускаю приложение на iPhone Simulator (не на сетчатке), изображения все еще отображаются.Означает ли это, что мне не нужно беспокоиться о включении двух наборов изображений: сетчатки и не сетчатки?

Все это кажется немного странным.Я предположил бы, что никакие изображения не будут отображаться на устройстве без сетчатки, если в нем нет файлов, отличных от @ 2x.

Примечание. Я не тестировал свое приложение на устройстве без сетчатки.Просто симулятор.

Ответы [ 3 ]

2 голосов
/ 07 января 2012

Я почти уверен, что iOS просто использует @ 2x и уменьшит его, если у вас нет графики без сетчатки.Хотя это неоптимально, поскольку вы позволяете iOS выполнять масштабирование во время выполнения, которое будет медленнее, чем включение графики без сетчатки, а также iOS может работать не так хорошо, как масштабирование, как ваш графический редактор.

1 голос
/ 28 июня 2013

Если вы назначаете изображения в Интерфейсном Разработчике и устанавливаете свойство изображения для UIImageView, например, image@2x.png, iOS не будет знать, что это изображение с высоким разрешением "2x". Фактически, на дисплее сетчатки iOS будет искать изображение с именем image@2x@2x.png. Поскольку он не найдет его, он установит масштабный коэффициент изображения на 1,0.

Свойство contentMode (просто «режим» в XCode) будет определять, происходит ли какое-либо масштабирование изображения в соответствии с ограничениями UIImageView. Возможно, вы захотите установить режим «Подгонка по размеру», чтобы масштабировать изображение с высоким разрешением, необходимое для отображения как на сетчатке, так и на сетчатке. В общем случае изображение будет отображаться так, как показано в Интерфейсном Разработчике.

Если вы используете UIImage imageNamed или аналогичную функцию для загрузки изображения и просто указываете image (где «image.png» не существует, а «image@2x.png» существует), тогда iOS будет фактически находить изображение на дисплее без сетчатки, хотя масштабный коэффициент будет 1,0. Как и раньше, вам нужно масштабировать его в соответствии с вашим видом. Изображение будет нормально работать на устройстве с сетчаткой, а коэффициент масштабирования будет установлен на 2,0, поскольку iOS сначала ищет изображение «2x», и не имеет значения, существует другой файл или нет.

Это из документации Apple по imageNamed:

На устройстве под управлением iOS 4 или более поздней версии поведение идентично, если Экран устройства имеет масштаб 1,0. Если экран имеет масштаб 2,0, этот метод сначала ищет файл изображения с тем же именем файла с добавленным к нему суффиксом @ 2x. Например, если имя файла Кнопка, он сначала ищет кнопку @ 2x. Если он находит 2x, он загружает это изображение и устанавливает свойство масштаба возвращенного объекта UIImage до 2.0. В противном случае он загружает неизмененное имя файла и устанавливает масштаб свойство до 1,0. См. IOS App Programming Guide для получения дополнительной информации о поддержка изображений с различными масштабными коэффициентами.

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

1 голос
/ 07 января 2012

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

Кстати, так ли это?просто у вас нет графики 1x, доступной вам, или вы беспокоитесь о своих приложениях (размер загрузки) или ...

...