iPhone XR возвращает правильные nativeBounds, но имеет неправильный размер экрана на устройстве - PullRequest
0 голосов
/ 12 ноября 2018

Мой проект целевой iOS - 11 и выше.Он имеет правильные ресурсы для запуска изображений для XR и XS Max с соответствующими размерами.На симуляторе мое приложение работает как на XR, так и на XS Max.

Но пользователи сообщали о проблемах пользовательского интерфейса на реальных устройствах.После некоторых исследований на реальном устройстве это выглядит так:

[UIScreen mainScreen].nativeBounds.size

возвращает правильные значения.Но кажется, что само устройство думает, что оно имеет размер экрана iPhone X (например, когда я не использую правильные изображения экрана запуска).И, по моему мнению, он возвращает неправильные значения с

[UIScreen mainScreen].bounds.size

, этот, я считаю, возвращает значения, как будто это не iPhone XR, а iPhone X.

Кто-то тоже сталкивался с такой проблемой?

Ответы [ 3 ]

0 голосов
/ 19 ноября 2018

iPhone XR не использует тот же размер в (виртуальных) точках, что iPhone X или iPhone XS. Он использует те же размеры точек, что и новый iPhone XS Max, но отображается только с @2x вместо @3x, как у Max (меньшая плотность пикселей на дюйм). Вы можете узнать больше о размерах экрана, точках, отображаемых размерах и т. Д. Для каждой модели iPhone здесь .

Отсутствующие шаблоны для запуска изображений в XCAssets также влияют на новое поколение iPad, например, новый iPad Pro 11 "немного отличается от стандартного соотношения сторон 3/4, которое есть у других iPad. Более глубокое изучение проблемы отсутствующих шаблонов привело меня к этой публикации радара от 2015 года о пропавшем iPad Pro App Icon Icon и Запустите шаблоны изображений, где комментарий гласит:

[...] and Developer relations reported in a radar comment that they no longer support launch images and will not be adding the iPad pro launch image size to asset catalogs.

Похоже, что Apple не рекомендует использовать образы запуска внутри XCAssets и предлагает вместо этого использовать Launch Screen.storyboard. Он будет «автоматически изменять размер» до правильных размеров (и соответственно выходов UIScreen.main.bounds и UIScreen.main.nativeBounds) в зависимости от используемого устройства или симулятора.

0 голосов
/ 30 ноября 2018

В моем случае проблема была в настройках конкретного пользователя устройства.Настройки -> Дисплей и яркость -> Переключатель масштабирования дисплея в положение ON.Это причина для возврата неправильных

[UIScreen mainScreen].bounds.size

значений времени выполнения

0 голосов
/ 19 ноября 2018

Я столкнулся с тем же вопросом и нашел причину. Вы можете проверить LaunchImage в активах . Есть ли изображение для iPhone XR. Если у вас нет iPhone XR LaunchImage , размер экрана XR будет рассчитываться с iPhone X. Так что создает LaunchImage для XR . Надеюсь, это поможет.

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