Сайт Apple утверждает, что разрешение 1080p: 1920 x 1080
Тем не менее, экран запуска, требуемый Xcode (8.0 GM выпущен сегодня), имеет размер 2208 x 1242.
Кто прав?
ios
xcode
ios-simulator
iphone-6
iphone-6-plus
JasonGenX
источник
источник
Ответы:
IPhone 6+ выполняет внутреннее рендеринг с использованием ресурсов @ 3x с виртуальным разрешением 2208 × 1242 (с 736x414 точками), а затем сэмплирует их для отображения. То же самое, что и использование масштабированного разрешения на MacBook Retina - оно позволяет им получить целое кратное для пиксельных активов, при этом, например, текст размером 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 пикселей по вертикали для хорошего масштабирования.
источник
[UIScreen mainScreen].bounds.size.height
возвращает 736 в симуляторе iPhone 6+ в портретном режиме. Это значение 2208, деленное на шкалу 3. Ширина 414.Ответ заключается в том, что старые приложения работают в режиме масштабирования 2208 x 1242. Но при создании приложения для новых телефонов доступны следующие разрешения: Super Retina HD 5.8 (iPhone X) 1125 x 2436 (458ppi) , Retina HD 5.5 ( iPhone 6, 7, 8 Plus ) 1242 x 2208 и Retina HD 4.7 ( iPhone 6 ) 750 x 1334 . Это вызывает путаницу, упомянутую в вопросе. Для создания приложений, которые используют полноэкранные размеры новых телефонов, добавьте LaunchImages в размерах: 1125 x 2436, 1242 x 2208, 2208 x 1242 и 750 x 1334.
Обновлено для новых iPhone 11, 11 Pro, 11 Pro Max
Размер для iPhone 11 Pro Max с масштабированием @ 3x , координатное пространство: 414 x 896 точек и 1242 x 2688 пикселей, 458 точек на дюйм, физический размер устройства составляет 3,06 x 6,22 дюйма или 77,8 x 158,0 мм. 6,5 "Super Retina XDR дисплей.
Размер для iPhone 11 Pro с масштабированием @ 3x , координатное пространство: 375 x 812 точек и 1125 x 2436 пикселей, 458 ppi, физический размер устройства 2,81 x 5,67 дюйма или 71,4 x 144,0 мм. 5,8 "Super Retina XDR дисплей.
Размер для iPhone 11 с масштабированием @ 2x , координатное пространство: 414 x 896 точек и 828 x 1792 пикселей, 326 ppi, физический размер устройства составляет 2,98 x 5,94 дюйма или 75,7 x 150,9 мм. 6,1-дюймовый жидкокристаллический дисплей Retina HD.
Размер для iPhone X🅂 Max с масштабированием @ 3x (название Apple: дисплей Super Retina HD 6.5 " ), пространство координат: 414 x 896 точек и 1242 x 2688 пикселей, 458 ppi, физический размер устройства 3,05 x 6,20 или 77,4 x 157,5 мм.
Размер для iPhone X🅁 с масштабированием @ 2x (название Apple: дисплей Super Retina HD 6.1 " ), пространство координат: 414 x 896 точек и 828 x 1792 пикселей, 326 ppi, физический размер устройства составляет 2,98 x 5,94 дюйма или 75,7 x 150,9 мм. ,
Размер для iPhone X🅂 и iPhone X с масштабированием @ 3x (название Apple: Super Retina HD 5,8 "дисплей ), пространство координат: 375 x 812 точек и 1125 x 2436 пикселей, 458 ppi, физический размер устройства составляет 2,79 x 5,65 или 70,9 х 143,6 мм.
Размер для iPhone 6, 6S, 7 и 8 с масштабированием @ 3x (название Apple: Retina HD 5.5 ), пространство координат: 414 x 736 точек и 1242 x 2208 пикселей, 401 ppi, физический размер экрана 2,7 x 4,8 дюйма или 68 x 122 мм . При работе в режиме масштабирования, то есть без новых LaunchImages или выбранных в программе установки на iPhone 6 Plus, исходный масштаб составляет 2,88, а экран составляет 320 x 568 точек, что является собственным размером iPhone 5:
Размер для iPhone 6 и iPhone 6S с масштабированием @ 2x (название Apple: Retina HD 4.7 ), координатное пространство: 375 x 667 точек и 750 x 1334 пикселей, 326 ppi, физический размер экрана составляет 2,3 x 4,1 дюйма или 58 x 104 мм . При работе в режиме масштабирования, то есть без новых LaunchImages, экран имеет размер 320 x 568 точек, что соответствует исходному размеру iPhone 5:
И iPhone 5 для сравнения составляет 640 x 1136, iPhone 4 640 x 960.
Вот код, который я использовал, чтобы проверить это (обратите внимание, что nativeScale работает только на iOS 8):
Примечание. Загрузите LaunchImages, иначе приложение будет работать в режиме масштабирования и не будет отображать правильное масштабирование или размеры экрана. В режиме масштабирования
nativeScale
иscale
не будет одинаковым.На реальном устройстве масштаб может быть 2.608 на iPhone 6 Plus, даже если он не работает в режиме масштабирования, но при запуске на симуляторе он будет иметь масштаб 3.0.источник
Реальное / физическое разрешение iPhone 6 Plus составляет 1920x1080, но в Xcode вы настраиваете интерфейс для разрешения 2208x1242 (736x414 точек), а на устройстве оно автоматически уменьшается до 1920x1080 пикселей.
Краткое описание разрешений iPhone:
источник
Вам, вероятно, следует прекратить использовать образы запуска в 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-файла Launch Screen в ваш проект:
Конфигурирование вашего проекта для использования xib файла Launch Screen вместо Каталога Активов:
источник
На физическом устройстве границы основного экрана iPhone 6 Plus - 2208x1242, а nativeBounds - 1920x1080. . Для изменения размера физического дисплея используется аппаратное масштабирование.
На симуляторе границы основного экрана iPhone 6 Plus и nativeBounds равны 2208x1242.
Другими словами ... Видео, OpenGL и другие вещи, основанные на
CALayers
пикселях, будут иметь дело с реальным буфером кадров 1920x1080 на устройстве (или 2208x1242 на симе ). Вещи, связанные с точками,UIKit
будут иметь дело с границами 2208x1242 (x3) и будут соответствующим образом масштабироваться на устройстве.У симулятора нет доступа к тому же аппаратному обеспечению, которое выполняет масштабирование на устройстве, и на самом деле не имеет особой пользы его симуляция в программном обеспечении, поскольку они дают результаты, отличные от аппаратного. Таким образом, имеет смысл установить
nativeBounds
основной экран моделируемого устройства на границы основного экрана физического устройства.iOS 8 добавил API для
UIScreen
(nativeScale
иnativeBounds
), чтобы позволить разработчику определять разрешение,CADisplay
соответствующееUIScreen
.источник
Для таких, как я, которые задаются вопросом, как относятся к устаревшим приложениям, я провел небольшое тестирование и вычисления по этому вопросу.
Благодаря подсказке @ hannes-sverrisson я начал с предположения, что устаревшее приложение обрабатывается с разрешением 320x568 в iPhone 6 и iPhone 6 plus.
Тест проводился на простом черном фоне
bg@2x.png
с белой каймой. Фон имеет размер 640x1136 пикселей и является черным с внутренней белой границей в 1 пиксель.Ниже приведены скриншоты, предоставленные симулятором:
На снимке экрана iPhone 6 мы видим поле в 1 пиксель сверху и снизу белой границы и поле в 2 пикселя на снимке экрана iPhone 6 plus. Это дает нам б пространство 1242x2204 на iPhone 6 плюс вместо 1242x2208 и 750x1332 на iPhone 6 вместо 750x1334.
Можно предположить, что эти битые пиксели должны соответствовать соотношению сторон iPhone 5:
Во-вторых, важно знать, что ресурсы @ 2x будут масштабироваться не только на iPhone 6 plus (который ожидает активы @ 3x), но и на iPhone 6. Возможно, это связано с тем, что не масштабирование ресурсов привело бы к неожиданным макетам из-за для увеличения зрения.
Однако это масштабирование не эквивалентно по ширине и высоте. Я попробовал это с ресурсом 264x264 @ 2x. Учитывая результаты, я должен предположить, что масштабирование прямо пропорционально отношению пикселей / точек.
Важно отметить, что масштабирование iPhone 6 отличается по ширине и высоте (309x310). Это подтверждает приведенную выше теорию о том, что масштабирование не пропорционально ширине и высоте, а использует соотношение пикселей и точек.
Надеюсь, это поможет.
источник
Проверьте эту инфографику: http://www.paintcodeapp.com/news/iphone-6-screens-demystified
Это объясняет различия между старыми iPhone, iPhone 6 и iPhone 6 Plus. Вы можете увидеть сравнение размеров экрана в точках, визуализированных пикселях и физических пикселях. Там же вы найдете ответ на свой вопрос:
Обновить:
Существует обновленная версия инфографики, упомянутой выше. Он содержит более подробную информацию о различиях в разрешении экрана и пока охватывает все модели iPhone, включая 4-дюймовые устройства.
http://www.paintcodeapp.com/news/ultimate-guide-to-iphone-resolutions
источник
Даже если мне вообще не нравится тон в блоге Daring Fireball Джона Грубера, его « Большая гипотеза дисплея iPhone» стоит того, чтобы ее прочитать.
Он догадался , но получил именно право и разрешение в точках и в пикселях для обеих моделей, за исключением того, что он не сделал (я ни) не ожидают , Apple , чтобы строить меньше разрешение физического дисплея и масштабирования вниз (подробности в @ ответ Томми).
Суть всего этого заключается в том, что нужно перестать думать с точки зрения пикселей и начать думать с точки зрения точек (это имело место довольно долгое время, это не недавнее изобретение) и получающегося в результате физического размера элементов пользовательского интерфейса. Короче говоря, обе новые модели iPhone улучшаются в этом отношении, так как физически большинство элементов остаются одинакового размера, вы можете просто разместить больше их на экране (для каждого большего экрана вы можете разместить больше).
Я просто немного разочарован, что они не сохранили отображение внутреннего разрешения на фактическое разрешение экрана 1: 1 для большей модели.
источник