Разрешение изображения для новых iPhone 6 и 6+, добавлена ​​поддержка @ 3x?

141

Я просмотрел несколько статей и обсуждений, подобных одной здесь и здесь, о разрешениях изображений, которые новые iPhone будут использовать для отображения изображений @ 3x. Это правда?

Значит ли это, что нам нужно сохранить три изображения? Скажем, у меня есть изображение размером 50 X 50, нужно ли мне хранить 3 изображения для оптимизации внешнего вида новых iPhone?

  • Нормальный (50 X 50)
  • @ 2x - Retina (100 X 100)
  • @ 3x - Retina HD (150 X 150)

Или в новых телефонах будут использоваться только изображения @ 2x, а @ 3x нет ничего?

Я протестировал, создав образец проекта, и все симуляторы, похоже, используют изображения @ 3x, это сбивает с толку.

редактировать

Вот еще немного информации

  • 3GS (163 ppi, используйте нормальный)
  • 4, 4, 5 и 5 секунд (326 пикселей на дюйм, поэтому мы используем @ 2x)
  • 6 (326 пикселей на дюйм, похоже, будет использоваться @ 2x)
  • 6 плюс (401 ppi здесь кроется путаница)

редактировать

На основании ответов Цоба и Нитина я добавил в свой проект изображения @ 3x.

Информационное Править

Я вижу, что немногие пользователи не понимают, почему в iPhone 6 используются изображения @ 2x, хотя у него более высокое разрешение, причина в том, что

iPhone 6 может иметь другое разрешение, но одинаковую плотность пикселей на дюйм (PPI).

  • Разрешение относится к абсолютному количеству пикселей.
  • Плотность (также известная как количество пикселей на дюйм - PPI) относится к относительному количеству пикселей на дюйм, которое одинаково в случае iPhone 6 и предыдущих iPhone, но отличается в iPhone 6 plus.

Узнайте больше об этом здесь, в этой теме

Следовательно, iPhone 6 использует изображение @ 2x, такое же, как iPhone 4, 5 и 5S, поскольку он имеет тот же PPI, а iPhone 6 plus использует @ 3x.

Бхумит Мехта
источник
Тогда что толку от Retina 4 2x, если ни одно устройство не использует его?
Mrunal
1
Я согласен с тем, что плотность одинакова для 4, 5 и 6 iPhone, но как решить проблему с другим разрешением? Так что большая разница 640х960 и 750х1334 пикселей. Если мне нужно использовать фоновое изображение, перекрывающее весь экран. Как мне установить xcasset изображения в этом случае?
Матросов Александр
@MatrosovAlexander, как вы это решили?
Марио Карвалью,
в качестве обходного пути я также использовал изображение iphone 6 для изображения @ 2x, но это похоже на то, что xcode не имеет подходящего изображения для него
Матросов Александр
следуйте « stackoverflow.com/questions/48483934/… »
Ришил Патель,

Ответы:

54

В примере проекта я пробовал использовать стандартные изображения @ 2x и @ 3x, а симулятор iPhone 6+ использует изображение @ 3x. Таким образом, может показаться, что нужно сделать изображения @ 3x (если симулятор действительно воспроизводит поведение устройства). Но странно то, что все устройства (симуляторы), похоже, используют это изображение @ 3x, когда оно находится в структуре проекта, iPhone 4S / iPhone 5 тоже.
Отсутствие связи со стороны Apple по поводу потенциальной структуры @ 3x, в то время как они просят разработчиков опубликовать свои приложения для iOS8, довольно сбивает с толку, особенно при просмотре этих результатов на симуляторе.

** Редактировать с веб-сайта Apple **: также можно найти это в разделе «Что нового в iOS 8» на сайте Apple для разработчиков:

Поддержка нового масштаба экрана В iPhone 6 Plus используется новый дисплей Retina HD с масштабом экрана 3,0. Чтобы обеспечить максимальное удобство использования этих устройств, добавьте новые изображения, разработанные для этого масштаба экрана. В Xcode 6 каталоги активов могут включать изображения размером 1x, 2x и 3x; просто добавьте новые ресурсы изображения, и iOS выберет правильные ресурсы при запуске на iPhone 6 Plus. Поведение загрузки изображения в iOS также распознает суффикс @ 3x.

Все еще не понимаю, почему все устройства загружают @ 3x. Может это потому, что я использую обычные файлы, а не xcasset? Скоро попробую.

Изменить после дальнейшего тестирования: Хорошо, похоже, что iOS8 говорит об этом. При тестировании на симуляторе iPhone 5 iOS 7.1 он правильно использует изображение @ 2x. Но при запуске того же самого на iOS 8 он использует @ 3x на iPhone 5. Не уверен, что это желаемое поведение или ошибка / ошибка в iOS8 GM или симуляторах в Xcode 6.

TSob
источник
2
Да, я тестировал с симулятором, все устройства принимают 3-
кратные
Итак, в заключение, на сегодняшний день наилучшим возможным путем было бы использовать "@ 2x" в именах изображений, но каким-то образом проверять устройства для 6 Plus и использовать 3-кратное изображение БЕЗ "@ 3x", чтобы не отравить устройства 2x?
darkheartfelt
Похоже, что выбор 3x на iPhone 6 возможен только в том случае, если рассматриваемый ресурс - это JPG вместо PNG.
emreberge 07
102

ОБНОВИТЬ:

Новая ссылка для размера изображения иконок от Apple.

https://developer.apple.com/ios/human-interface-guidelines/graphics/image-size-and-resolution/

введите описание изображения здесь


Да, это правда, здесь Apple предоставляет официальную документацию относительно размеров значков или изображений.

введите описание изображения здесь

вы должны установить изображения для iPhone6 ​​и iPhone6 ​​+

Для iPhone 6:

750 x 1334 (@2x) for portrait

1334 x 750 (@2x) for landscape

Для iPhone 6 Plus:

1242 x 2208 (@3x) for portrait

2208 x 1242 (@3x) for landscape

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

Для настройки размера изображений для элементов управления вы можете установить 1x @ 2x и @ 3x следующим образом:

введите описание изображения здесь

Нитин Гохель
источник
8
Если все устройства имеют сетчатку 2x или 3x, почему каталог ресурсов запрашивает изображения 1x в проектах для таргетинга для iPhone только на iOS 7/8? Не имеет смысла.
Дак
1
может быть, для iphone4 @RubberDuck :) посмотрите, что ipad 2 и iPad Mini нуждаются в 1x
Нитин Гохель
извините, но вы не прочитали то, что я написал. Я говорю о проекте только для iPhone для iOS 7. Не существует iphone с 1x, который мог бы запускать iOS 7, но каталог ресурсов все еще требует этого.
Дак
@RubberDuck Выберите ресурс изображения, а затем просмотрите панель служебных программ в правой части Xcode. На одной из вкладок есть набор флажков. Возможно, на ваших активах установлено слишком много флажков, в результате чего 1x появляется в качестве опции.
rmaddy
10

Я протестировал, создав образец проекта, и все симуляторы, похоже, используют изображения @ 3x, это сбивает с толку.

Создайте разные версии изображения в каталоге активов, чтобы само изображение сообщало вам, какая это версия:

введите описание изображения здесь

Теперь запустите приложение на каждом симуляторе по очереди. Вы увидите, что 3-кратное изображение используется только на iPhone 6 Plus.

То же самое верно, если изображения извлекаются из пакета приложений с использованием их имен (например, one.png , one@2x.png и one@3x.png ) путем вызова imageNamed:и назначения в представление изображения.

(Однако есть разница, если вы назначаете изображение представлению изображения в Interface Builder - версия 2x игнорируется на устройствах с двойным разрешением. Это, вероятно, ошибка, по-видимому, ошибка внутри pathForResource:ofType:.)

матовый
источник
1
Вы отметили актив как «универсальный», поэтому вы видите последовательное поведение. Попробуйте вместо этого выбрать "зависит от устройства" в раскрывающемся меню!
Николай Спасов
1
@RalphZhouYuan Теперь у меня все работает нормально. Вы не увидите в списке версию 2x , просто назначьте версию 1x, и версия 2x или 3x будет использоваться правильно. Или просто используйте каталог активов.
Мэтт
1
@RalphZhouYuan Вот мой загружаемый пример: github.com/mattneub/Programming-iOS-Book-Examples/tree/master/… - он отображает как файлы изображений в пакете приложений, так и файлы изображений в каталоге ресурсов, и все они работают правильно.
Мэтт
3
@matt Я наконец обнаружил, что моя проблема связана с настройками цели развертывания (6.0) моего приложения. Я открыл вопрос: stackoverflow.com/questions/26333278/… и отправил отчет об ошибке в Apple.
excii
1
@RalphZhouYuan Вау, отличная детективная работа по отслеживанию этого! Спасибо за ответ.
Мэтт
2

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

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

если вы нацеливаетесь на устройства ios7 и ios8 и хотите наилучшего качества, вам понадобятся @ 2x и @ 3x для телефона и обычного и @ 2x для ресурсов ipad, поскольку не осталось телефонов без Retina и нет @ 3x ipad.

возможно, лучше создать активы в приложении из векторной графики ... проверьте http://mattgemmell.com/using-pdf-images-in-ios-apps/

Bastian
источник
просто используйте замечательный PaintCode для векторных изображений в приложениях
Fattie 01