SpriteKit - получение фактического размера / кадра видимой области в масштабируемых сценах. AspectFill

Я делал игру в SpriteKit, и у меня возникла проблема с поддержкой всех размеров экрана. Я попытался решить эту проблему, установив для всех режимов масштабирования сцен значение .AspectFill и установив фиксированный размер для всех экранов шириной 480 и высотой 800, как показано ниже:

let scene = GameScene (размер: CGSize (ширина: 480, высота: 800))

Я решил добавить границу (SKShapeNode), которая выравнивается по краям игровой сцены, и обнаружил, что self.frame.width и self.frame.height не дают размеры для устройства.видимая область, После небольшого исследования я обнаружил множество предложений, используя UIScreen.mainScreen (). Bounds.height и UIScreen.mainScreen (). Bounds.width. Вместо этого я реализовал способ получения видимых размеров экрана, и он по-прежнему давал мне размеры, которые не соответствовали фактическому размеру сцены, которая видна игроку.

Я не уверен, что это как-то связано с тем, что все мои сцены, независимо от разрешения устройства, имеют фиксированную ширину и высоту и масштабируются с использованием .AspectFill. Я застрял на проблеме поддержки всех размеров экрана на некоторое время, и я не уверен, как это сделать. Если это поможет, я использую векторные графические файлы, а не PNG. Итак, мои вопросы: есть ли быстрый способ поддержки всех размеров экрана или мне нужно прибегнуть к жесткому кодированию координат каждого узла в моих сценах для каждого устройства? Я не могу понять, почему это было бы решением, поскольку это кажется слишком утомительным, и код выглядел бы грязно.

Я также спрашиваю о том, как получить прямоугольник / рамку, которая дает размеры видимой области сцен на устройстве после масштабирования сцены?

Прошу прощения, если какой-либо из моих вопросов задавался ранее, но каждый найденный ответ либо не решает мою проблему конкретно, либо кажется слишком грязным, чтобы писать. Я думаю, что предоставил достаточно информации для решения этой проблемы, но если я этого не сделал, пожалуйста, попросите меня предоставить необходимую информацию.

Большое спасибо и любая помощь приветствуется

Ответы на вопрос(3)

Ваш ответ на вопрос