Путаница с разрешением iPhone 6 Plus: Xcode или веб-сайт Apple? для разработки
Программирование для размеров iPhone 6 и iPhone 6 Plus (без автоматического раскладки) // Учебное пособие по разработке iOS SDK
На сайте Apple утверждается, что разрешение 1080p: 1920 x 1080.
Однако экран запуска, требуемый Xcode (8.0 GM запущен сегодня), составляет 2208 x 1242.
- Стартовые изображения для iPhone 6+ должны иметь размер 1242×2208 и 2208×1242. По крайней мере, это заставляет приложения правильно работать в симуляторе (и это задокументировано в HIG). Я не понял, почему это отличается от предполагаемого физического размера экрана 1920×1080.
- 2 очень странное несоответствие.
- 14 Отличное объяснение: paintcodeapp.com/news/iphone-6-screens-demystified
- Это может измениться в стабильной версии Xcode 6.1. Это?
- 4 Чтобы обновить ссылку от Андреаса, см. «Полное руководство по разрешениям iPhone» paintcodeapp.com/news/ultimate-guide-to-iphone-resolutions
Внутренний рендеринг iPhone 6+ @ 3x активы при виртуальном разрешении 2208��1242 (с участием 736×414 точек), а затем сэмплы для отображения. То же, что и при использовании масштабированного разрешения на Retina MacBook , это позволяет им достичь целого кратного для пиксельных ресурсов, при этом сохраняя, например, Текст размером 12 пикселей выглядит на экране одинакового размера.
Итак, да, экраны запуска должны быть такого размера.
Математика:
6, 5, 5, 4 и 4 имеют размер 326 пикселей на дюйм и используют ресурсы @ 2x, чтобы придерживаться примерно 160 точек на дюйм всех предыдущих устройств.
6+ — это 401 пиксель на дюйм. Таким образом, гипотетически потребуется примерно 2,46x активов. Вместо этого Apple использует ресурсы @ 3x и масштабирует весь вывод примерно до 84% от его естественного размера.
На практике Apple решила использовать больше 87%, превратив 1080 в 1242. Несомненно, это было найти что-то, максимально приближенное к 84%, которое по-прежнему давало интегральные размеры в обоих направлениях 1242/1080 = 2208 / 1920 точно, тогда как если бы вы превратили 1080, скажем, в 1286, вам как-то нужно было бы рендерить 2286,22 пикселя по вертикали, чтобы хорошо масштабировать.
- 6 Как вы его вычислили -> «виртуальное разрешение 2208 × 1242 (с 736×414 точками)», и это «требует примерно @ 2,46x ресурсов». Что UIScreen mainScreen] .bounds.size.height вернет для 6+? 568, 568 * 3 (1704) или 1920.
- 1 Может быть, добавить к этому ответу примечание по поводу изображений запуска? (см. ответ Ханнеса). Полезно иметь в виду, что существующие приложения обновляются (в противном случае он работает с разрешением 320×576 @ 3x — какое-то время я был сбит с толку!)
- 2 @msk [UIScreen mainScreen].bounds.size.height возвращает 736 в симуляторе iPhone 6+ в портретной ориентации. Это значение 2208, разделенное на шкалу 3. Ширина равна 414.
- 1 Это не совсем такой же размер с @ 3x при разрешении 1242 * 2208, растягивается на 6%.
- 4 Какой ужасный кладж! Общесистемная потеря производительности, памяти и резкости только для того, чтобы немного упростить некоторые настройки размера на уровне API! Что ж, я думаю, все это будет иметь смысл, когда они выпустят iPhone 7 Plus с дисплеем 5,5 дюйма с 461 ppi.
Ответ заключается в том, что старые приложения работают в режиме увеличения 2208 x 1242. Но когда приложение создается для новых телефонов, доступны следующие разрешения: Super Retina HD 5.8 (iPhone X) 1125 x 2436 (458 пикселей на дюйм), Сетчатка HD 5.5 (iPhone 6, 7, 8 Plus) 1242 х 2208 и Сетчатка HD 4.7 (Айфон 6) 750 х 1334. Это вызывает путаницу, упомянутую в вопросе. Чтобы создавать приложения, которые используют полноэкранный размер новых телефонов, добавьте LaunchImages с размерами: 1125 x 2436, 1242 x 2208, 2208 x 1242 и 750 x 1334.
Обновлено для новых iPhone 12, 12 mini, 12 Pro, 12 Pro Max
Размер для iPhone 12 Pro Max с участием @ 3x масштабирование, координатное пространство: 428 х 926 очки и 1284 х 2778 пикселей, 458 пикселей на дюйм, физический размер устройства — 3,07 x 6,33 дюйма или 78,1 x 160,8 мм. 6,7-дюймовый дисплей Super Retina XDR.
Размер для iPhone 12 Pro с участием @ 3x масштабирование, координатное пространство: 390 х 844 очки и 1170 х 2532 пикселей, 460 пикселей на дюйм, физический размер устройства — 2,82 x 5,78 дюйма или 71,5 x 146,7 мм. 6,1-дюймовый дисплей Super Retina XDR.
Размер для iPhone 12 с участием @ 2x масштабирование, координатное пространство: 585 х 1266 очки и 1170 х 2532 пикселей, 460 пикселей на дюйм, физический размер устройства — 2,82 x 5,78 дюйма или 71,5 x 146,7 мм. 6,1-дюймовый дисплей Super Retina XDR.
Размер для iPhone 12 mini с участием @ 2x масштабирование, координатное пространство: 540 х 1170 очки и 1080 х 2340 пикселей, 476 пикселей на дюйм, физический размер устройства — 2,53 x 5,18 дюйма или 64,2 x 131,5 мм. 5,4-дюймовый дисплей Super Retina XDR.
Размер для iPhone 11 Pro Max с участием @ 3x масштабирование, координатное пространство: 414 х 896 очки и 1242 х 2688 пикселей, 458 пикселей на дюйм, физический размер устройства — 3,06 x 6,22 дюйма или 77,8 x 158,0 мм. 6,5-дюймовый дисплей Super Retina XDR.
Размер для iPhone 11 Pro с участием @ 3x масштабирование, координатное пространство: 375 х 812 очки и 1125 х 2436 пикселей, 458 пикселей на дюйм, физический размер устройства — 2,81 x 5,67 дюйма или 71,4 x 144,0 мм. 5,8-дюймовый дисплей Super Retina XDR.
Размер для iPhone 11 с участием @ 2x масштабирование, координатное пространство: 414 х 896 очки и 828 х 1792 пикселей, 326 пикселей на дюйм, физический размер устройства — 2,98 x 5,94 дюйма или 75,7 x 150,9 мм. 6,1-дюймовый дисплей Liquid Retina HD.
Размер для iPhone X Макс с участием @ 3x масштабирование (название Apple: Дисплей Super Retina HD 6.5 «), координатное пространство: 414 х 896 очки и 1242 х 2688 пикселей, 458 пикселей на дюйм, физический размер устройства — 3,05 x 6,20 дюйма или 77,4 x 157,5 мм.
Размер для iPhone X с участием @ 2x масштабирование (название Apple: Дисплей Super Retina HD с диагональю 6,1 дюйма), координатное пространство: 414 х 896 очки и 828 х 1792 пикселей, 326 пикселей на дюйм, физический размер устройства — 2,98 x 5,94 дюйма или 75,7 x 150,9 мм.
Размер для iPhone X и iPhone X с участием @ 3x масштабирование (название Apple: Дисплей Super Retina HD 5,8 дюйма), координатное пространство: 375 х 812 очки и 1125 х 2436 пикселей, 458 пикселей на дюйм, физический размер устройства — 2,79 x 5,65 дюйма или 70,9 x 143,6 мм.
Размер для iPhone 6, 6S, 7 и 8 с участием @ 3x масштабирование (название Apple: Сетчатка HD 5.5), координатное пространство: 414 х 736 очки и 1242 х 2208 пикселей, 401 пикселей на дюйм, физический размер экрана 2,7 x 4,8 дюйма или 68 x 122 мм. При работе в режиме увеличения, то есть без новых LaunchImages или выбора в настройке на iPhone 6 Plus, собственный масштаб составляет 2,88, а экран — 320 x 568 точек, что является исходным размером iPhone 5:
Размер для Айфон 6 и iPhone 6S с масштабированием @ 2x (название Apple: Сетчатка HD 4.7), координатное пространство: 375 х 667 очки и 750 х 1334 пикселей, 326 пикселей на дюйм, физический размер экрана — 2,3 x 4,1 дюйма или 58 x 104 мм. При работе в режиме увеличения, то есть без новых изображений LaunchImages, экран имеет размер 320 x 568 точек, что соответствует исходному размеру iPhone 5:
И iPhone 5 для сравнения 640 x 1136, Ай фон 4 640 х 960.
Вот код, который я использовал, чтобы проверить это (обратите внимание, что nativeScale работает только на iOS8):
Примечание: загрузите LaunchImages, иначе приложение будет работать в режиме увеличения и не будет отображать правильное масштабирование или размеры экрана. В режиме увеличения nativeScale и scale не будет прежним. На реальном устройстве масштаб может составлять 2,608 на iPhone 6 Plus, даже если он не работает в режиме увеличения, но при работе в симуляторе он будет показывать масштаб 3,0.
- 3 Я думаю, вы не добавляли новые версии образа запуска. Вероятно, поэтому приложение работает в «режиме совместимости», а границы экрана на обоих устройствах — старые 320×576.
- 3 Как только вы добавите новые размеры изображения запуска, вы получите правильные (логические) размеры экрана: 375×667 для iPhone 6 и 414×736 для 6+.
- 1 @DanielRinser Спасибо за это. Я это попробую.
- @DanielRinser благодарит вас за ваш вклад в загрузочные изображения. Я обновил ответ на основе ваших данных.
- а что насчет активов для iPhone 4? Как их назвать и как поместить в каталог активов, если для них нет слота? В каталоге ресурсов есть 3 слота для изображений iPhone: 1x, 2x и 3x. Если 2x и 3x предназначены для ресурсов iPhone 6 и 6+, нужно ли размещать ресурсы iPhone 4 на 1x? Я так не думаю.
Реальное / физическое разрешение iPhone 6 Plus составляет 1920×1080, но в Xcode вы делаете свой интерфейс для разрешения 2208×1242 (736×414 точек), а на устройстве оно автоматически уменьшается до 1920×1080 пикселей.
Краткий справочник по разрешениям iPhone:
- 3 Красивый и простой ответ. Спасибо, Лешек.
Вам, вероятно, следует отказаться от использования изображений запуска в iOS 8 и использовать раскадровку или nib / xib.
В Xcode 6, открыть File меню и выберите New ��� File. ��� iOS ��� User Interface ��� Launch Screen .
Затем откройте настройки для вашего проекта, щелкнув по нему.
в General вкладка в разделе под названием App Icons and Launch Images , установить Launch Screen File в файлы, которые вы только что создали (это установит UILaunchStoryboardName в info.plist ).
Обратите внимание, что в настоящее время симулятор будет показывать только черный экран, поэтому вам необходимо тест на реальном устройстве.
Добавление xib-файла экрана запуска в ваш проект:
Настройка вашего проекта для использования xib-файла экрана запуска вместо каталога активов:
- 1 Практически идеальные инструкции, но это должен быть Файл -> НОВЫЙ -> Файл . и т. Д. Потребовалось время, чтобы найти второй файл 🙂 Спасибо за помощь!
- Как сделать так, чтобы они хорошо выглядели? Когда я пытаюсь наложить на него изображение, оно становится очень шатким.
- Если вы не просто показываете изображение, а хотите показать пользовательский интерфейс для загрузки, то это хорошая идея, поскольку изображение все равно должно иметь соответствующие размеры, независимо от того, было оно в раскадровке или нет. Точно так же, если вы можете нарисовать изображение в коде, вы можете обойти это, я полагаю.
- Вам по-прежнему необходимо предоставлять файлы изображений, если вы поддерживаете что-либо до iOS 8, поскольку xib-файлы запуска не имеют обратной совместимости.
На физическом устройстве границы главного экрана iPhone 6 Plus 2208×1242 а nativeBounds — это 1920×1080. Для изменения размера физического дисплея используется аппаратное масштабирование.
На симуляторе границы главного экрана iPhone 6 Plus и nativeBounds равны 2208×1242.
Другими словами . Видео, OpenGL и другие вещи, основанные на CALayers которые имеют дело с пикселями, будут иметь дело с реальным 1920×1080 кадровый буфер на устройстве (или 2208×1242 на сим). Вещи, связанные с точками в UIKit будет иметь дело с 2208×1242 (x3) и масштабируются соответствующим образом на устройстве.
Симулятор не имеет доступа к тому же оборудованию, которое выполняет масштабирование на устройстве, и на самом деле нет особого преимущества от моделирования его в программном обеспечении, поскольку они будут давать результаты, отличные от результатов на оборудовании. Таким образом, имеет смысл установить nativeBounds главного экрана моделируемого устройства до границ главного экрана физического устройства.
iOS 8 добавила API в UIScreen ( nativeScale и nativeBounds ), чтобы разработчик мог определить разрешение CADisplay соответствующий UIScreen .
Для тех, кто, как я, задается вопросом, как относятся к устаревшим приложениям, я провел небольшое тестирование и вычисления по этому вопросу.
Благодаря подсказке @ hannes-sverrisson я начал с предположения, что устаревшее приложение обрабатывается с разрешением 320×568 в iPhone 6 и iPhone 6 plus.
Тест проводился на простом черном фоне. [email protected] с белой каймой. Фон имеет размер 640×1136 пикселей, он черный с внутренней белой границей в 1 пиксель.
Ниже представлены скриншоты, предоставленные симулятором:
- Симулятор iPhone 5: http://i.stack.imgur.com/b2E5K.png
- Симулятор iPhone 6: http://i.stack.imgur.com/4Qz8N.png
- Симулятор iPhone 6 plus: http://i.stack.imgur.com/hQisc.png
На скриншоте iPhone 6 мы видим поле в 1 пиксель сверху и снизу белой границы и поле в 2 пикселя на снимке экрана iPhone 6 Plus. Это дает нам используемый пространство 1242×2204 на iPhone 6 plus вместо 1242×2208 и 750×1332 на iPhone 6 вместо 750×1334.
Мы можем предположить, что эти битые пиксели предназначены для соблюдения соотношения сторон iPhone 5:
Во-вторых, важно знать, что ресурсы @ 2x будут масштабироваться не только на iPhone 6 plus (который предполагает ресурсы @ 3x), но и на iPhone 6. Вероятно, это связано с тем, что отсутствие масштабирования ресурсов привело бы к неожиданным макетам из-за к увеличению обзора.
Однако это масштабирование не эквивалентно по ширине и высоте. Я пробовал с ресурсом 264×264 @ 2x. Учитывая результаты, я должен предположить, что масштабирование прямо пропорционально соотношению пикселей / точек.
Важно отметить, что масштабирование iPhone 6 не одинаковые по ширине и высоте (309×310). Это подтверждает вышеизложенную теорию о том, что масштабирование не пропорционально по ширине и высоте, а использует соотношение пикселей / точек.
Надеюсь, это поможет.
Посмотрите эту инфографику: http://www.paintcodeapp.com/news/iphone-6-screens-demystified
Он объясняет различия между старыми iPhone, iPhone 6 и iPhone 6 Plus. Вы можете увидеть сравнение размеров экрана в точках, отображаемых пикселях и физических пикселях. Там же вы найдете ответ на свой вопрос:
iPhone 6 Plus — с дисплеем Retina HD. Коэффициент масштабирования равен 3, а затем изображение уменьшается с 2208 × 1242 пикселей до 1920 × 1080 пикселей.
Коэффициент масштабирования составляет 1920/2208 = 1080/1242 = 20/23. Это означает, что каждые 23 пикселя исходного рендеринга должны быть сопоставлены с 20 физическими пикселями. Другими словами, изображение уменьшается примерно до 87% от исходного размера.
Обновить:
Это обновленная версия упомянутой выше инфографики. Он содержит более подробную информацию о различиях в разрешении экрана и охватывает все модели iPhone, включая 4-дюймовые устройства.
- Значит, даже при выключенном сглаживании есть необязательное сглаживание, которое происходит при уменьшении масштаба?
- Было бы здорово, если бы в этой инфографике был 4-дюймовый экран.
- @Rajesh Я обновил свой ответ, проверьте его сейчас, чтобы узнать о 4-дюймовых устройствах.
Даже если мне в целом не нравится тон блога Daring Fireball Джона Грубера, его гипотеза о большом экране iPhone стоит того, чтобы ее прочесть.
Он догадался, но получил точно верно и разрешение в точках и в пикселях для обеих моделей, за исключением того, что он (я тоже) не ожидал, что Apple построит физический дисплей с меньшим разрешением и уменьшит масштаб (подробности в ответе @ Tommy).
Суть всего в том, что нужно перестать думать в терминах пикселей и начать думать в терминах точек (так было уже довольно давно, это не недавнее изобретение) и, как следствие, физического размера элементов пользовательского интерфейса. Короче говоря, обе новые модели iPhone улучшаются в этом отношении, поскольку физически большинство элементов остаются того же размера, вы можете просто разместить их на экране больше (для каждого большего экрана вы можете разместить больше).
Я просто немного разочарован, что они не сохранили сопоставление внутреннего разрешения с фактическим разрешением экрана 1: 1 для большей модели.
- мы мыслим точками, но, к сожалению, нам приходится создавать изображения в пикселях в Photoshop .
- 2 Пиксели важны для многих из нас по многим причинам. В то время как Apple придерживается своего мнения по этой теме, они неохотно добавили [UIScreen nativeBounds] в iOS8 по очень веским причинам.
- Да, пиксели тоже важны, но для статических ресурсов, таких как изображения (заставки и т.п.). Моя точка зрения (каламбур) была скорее для макета экрана приложения, вещей, отрисовываемых динамически.
Источник