Граница экрана настройки на iPad Pro 12.9 с SKPhysics

Я пытаюсь создать границу физики для iPad Pro 12.9

Вот как я это делаю:

override func didMove(to view: SKView) {

        physicsWorld.contactDelegate = self

        let sceneBody = SKPhysicsBody(edgeLoopFrom: self.frame)
        sceneBody.friction = 0
        self.physicsBody = sceneBody

....
}

Но в альбомной ориентации буква Y значительно ниже и выше, чем на реальном экране, а в книжной ориентации - немного ниже. Но Х прав в обоих.

Я не знаю, что я делаю не так.

Обновить

Я добавил принт к вышеприведенному, и он показывает maxX и maxY self.frame равными 375 и 667 соответственно. В ландшафтном режиме. Насколько я могу судить, ни одно из этих чисел не должно быть, но значение X работает правильно, а Y находится далеко за верхом и низом экрана.

Разрешение экрана этой модели iPad составляет 2732x2048 (вдвое меньше, чем в точках), поэтому я не вижу корреляции между этими числами и указанным размером кадра.

1 ответ

Решение

Это как-то связано с тем, как вы масштабируете сцену. При представлении сцены вы можете установить scaleMode свойство сцены, которая имеет тип SKSceneScaleMode, Есть четыре разных режима:

  • fill: Каждая ось масштабируется независимо, чтобы уместить весь экран
  • aspectFill: Сцена масштабируется, чтобы заполнить экран, но сохраняя соотношение сторон. Это то, что ваша сцена, вероятно, установлена.
  • aspectFit: Сцена масштабируется, чтобы уместиться внутри экрана, но сохраняет соотношение сторон. Если сцена имеет другое соотношение сторон экрана устройства, будет использоваться почтовый ящик.
  • resizeFill: Сцена изменяется в соответствии с видом.
Другие вопросы по тегам