Почему есть разница?
Давайте рассмотрим некоторые важные характеристики дисплея вашего iPhone 7 :
- с разрешением 750 (Ш) x 1334 (В) пикселей (16: 9)
- Результирующая область 375 (Ш) х 667 (В) пикселей (16: 9)
Поскольку мобильные устройства с одинаковым размером экрана могут иметь очень разные разрешения, разработчики часто используют viewports
при создании 3D-сцен или веб-страниц, удобных для мобильных устройств. В полях VR и AR: чем ниже разрешение, тем быстрее рендерер, и нагрузка на CPU / GPU значительно меньше . Идея создания видовых экранов в основном используется для мобильных устройств. В macOS Screen Resolution
и Viewport Resolution
идентичны .
В iPhone, а также в других мобильных устройств, Viewport
- это уменьшенная версия (обычно в 2 или 3 раза меньше по каждой оси) разрешения, которая позволяет просматривать окна 3D-сцен или веб-сайты более согласованно на разных устройствах и (очень важно!) с меньшим потреблением энергии . Окна просмотра часто более стандартизированы и меньше размеров разрешения.
Снимки почти всегда отражают реальных разрешений экрана :
let viewportSize = sceneView.snapshot().size
/* 750 x 1,334 */
/* iPhone 7 rez */
Размер SceneView часто отражает стандартизированных разрешение экрана (в 4 раза меньше, чем у спецификации):
let viewSize = sceneView.bounds.size
/* 375 x 667 */
/* ViewPort rez */
Соотношение размеров экрана (1/4) к Screen Rez в iPhone 7:
Схемы c изображение!
Размер области просмотра и ее реальное расположение в мобильном устройстве:
Реальное изображение!
Дополнительная справка: Phone X
имеет разрешение ViewPort в девять раз меньше ( 375 x 812 ), чем разрешение экрана ( 1125 x 2436 ).
Какие координаты используются при проверке нажатия ?
В Hit-Testing и Ray-Casting используются координаты ViewPort .
Давайте сделаем 3 касания, используя метод проверки попадания - первый касание в Up в левом углу (около x=0
и y=0
), второе нажатие в центре экрана и третье нажатие в нижнем правом углу (около x=667
и y=375
):
let point: CGPoint = gestureRecognize.location(in: sceneView)
print(point)
Координаты iPhone 7 Видовой экран печатается в консоли:
Quod Erat Demonstrandum!