Использование safeAreaInsets для компоновки SKScene - PullRequest
0 голосов
/ 25 августа 2018

Фон

Варианты этого вопроса задавались ранее, но я не могу найти ответ, относящийся конкретно к SKScene.

Я создаю универсальную игру , с которой я хочу работать на всех поддерживаемых устройствах iOS в альбомной ориентации. Моя сцена размером 750x1334.

Я хочу безопасно разместить спрайт ниже метки, если устройство представляет собой iPhone X как показано ниже:

image

В идеале я хочу сохранить значение safeAreaInsets.top в переменной topPadding, которая будет использоваться в сцене. Это значение будет учитывать метку, если iPhone X, но будет 0, если любая другая модель. Примерно так:

let spritePosY = (myScene.size.height / 2) - (mySprite.size.height / 2) - topPadding

Покушение

У меня есть значение safeAreaInsets.top в методе viewDidLayoutSubviews (ниже), однако, поскольку оно вызывается после размещения подпредставлений, я не знаю, как использовать это значение при настройке сцены?

 override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        if #available(iOS 11.0, *) {
            topPadding = view.safeAreaInsets.top
            bottomPadding = view.safeAreaInsets.bottom
        }
    }

Я иду не в ту кроличью нору? Есть ли более простой способ добиться этого?

...