Реальное разрешение экрана iPhone XR отличается от разрешения экрана, заданного Swift? - PullRequest
0 голосов
/ 11 января 2019

разрешение экрана iPhone XR в соответствии со скриншотами, веб-сайтом Apple и т. Д.:

828x1792

Разрешение экрана iPhone XR по Swift:

375x812 (или 750x1624)

Почему и как с этим бороться?!

ПРИМЕЧАНИЕ: все iphones Xx работают нормально, кроме этого - iphone XR (+ iphone XR simulator)

Ответы [ 4 ]

0 голосов
/ 27 февраля 2019

Это потому, что на вашем iPhone XR включена функция «Масштаб отображения».

Настройки -> Дисплей и яркость -> Масштаб дисплея -> Установить на стандарт

0 голосов
/ 11 января 2019

Существует разница между физическим размером экрана и размером UIKit (в пикселях и точках).

UIKit использует точки, точка может состоять из нескольких пикселей (в этом случае @ 2x, @ 3x).

Основное различие между XR и другими устройствами X состоит в том, что XR использует @ 2x, а другие устройства - @ 3x.

Вот документы Apple по этому вопросу: https://developer.apple.com/library/archive/documentation/DeviceInformation/Reference/iOSDeviceCompatibility/Displays/Displays.html

PaintCode также сделал очень удобную графику, чтобы проиллюстрировать это:

https://www.paintcodeapp.com/news/ultimate-guide-to-iphone-resolutions

РЕДАКТИРОВАТЬ, чтобы ответить на комментарий rmaddy.

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

0 голосов
/ 11 января 2019

Существует два различных понятия: Размер UIKit и Собственное разрешение .

Размер UIKit представлен точками и используется при позиционировании видов внутри вашего проекта. Допустим, ваш экран имеет размер 414x896 точек, и вы центрируете свой вид в положение [207,448], ваш взгляд будет в центре экрана.

Собственное разрешение представлено пикселей , и оно показывает, сколько пикселей имеет экран устройства. Вы можете получить собственное разрешение устройства, умножив размер UIKit на Коэффициент собственной шкалы , который индивидуален для каждого устройства.

Я создал таблицу для этих размеров, коэффициентов масштабирования и разрешения для всех iPhone, которые поддерживают iOS 12

iPhone       | UIKit size (points) | Native resolution (pixels) | Native Scale factor
-------------|---------------------|----------------------------|--------------------
Xs Max       | 414x896             | 1242x2688                  | 3
X, Xs        | 375x812             | 1125x2436                  | 3
Xr           | 414x896             | 828x1792                   | 2
6+,6s+,7+,8+ | 414x736             | 1080x1920                  | 2.608
6,6s,7,8     | 375x667             | 750x1334                   | 2
5s,SE        | 320x568             | 640x1136                   | 2

... из этой таблицы видно, что ваш iPhone Xr имеет размер UIKit 414x896 , а не 375x812 , как вы написали в своем вопросе.

Вы можете получить размер UIKit устройства, установив границы экрана

UIScreen.main.bounds

и собственное разрешение, получая собственные границы

UIScreen.main.nativeBounds

... каждый из них хорошо работает для iPhone Xr, поэтому проверьте еще раз, выполняете ли вы свой код на iPhone Xr, а не на iPhone Xs / X, который имеет размер UIKit 375x812 . Кроме того, 750x1624 - это просто странная шкала родного разрешения Xr, поэтому проверьте, не занимаетесь ли вы дополнительной математикой.

0 голосов
/ 11 января 2019

Вы получаете разрешение iphone X, и это происходит, скорее всего, потому, что вы используете iphone X в раскадровке. Код сначала дает вам разрешение раскадровки. Если вы хотите получить реальный размер, вызовите метод layoutIfNeeded () перед кодом, который использует разрешение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...