#swift #sprite-kit
#swift #набор спрайтов
Вопрос:
Какой наилучший способ добавить метку в правый или левый верхний угол сцены? Это должно быть для разных устройств.
let height = self.frame.size.height
let width = self.frame.size.width
label.fontSize = 50
label.verticalAlignmentMode = .Top
label.horizontalAlignmentMode = .Left
label.position = CGPoint(x:2, y:height-2)
Но это не было бы в углу. Что не так?
Комментарии:
1. Приведенный вами код выглядит корректно и должен помещать ярлык в верхний левый угол с двухточечным буфером на каждой оси. Какое поведение вы видите?
2. Ярлык находится выше экрана. Я могу вычесть 50 или больше, чтобы увидеть это. Если я вычту 2, то он будет скрыт.
3. Тогда рамка self будет больше, чем размер вашего экрана.
Ответ №1:
В наборе спрайтов начало координат сцены по умолчанию находится в нижнем левом углу экрана. Итак, если вы хотите, чтобы ярлык находился в верхнем углу, вы должны продолжать использовать высоту экрана для позиции вашей метки, но также использовать либо 0, либо ширину экрана для позиции x. Соедините это с режимом выравнивания по горизонтали влево или вправо в зависимости от стороны, и ваш ярлык окажется в правильном положении.
Для ярлыка в верхнем левом углу:
label.horizontalAlignmentMode = .Left
label.position = CGPoint(x:0.0, y:self.size.height)
Или для верхнего правого:
label.horizontalAlignmentMode = .Right
label.position = CGPoint(x:self.size.width, y:self.size.height)
Комментарии:
1. Спасибо, но я не вижу ярлыка с таким кодом. Может быть, это ошибка? Существует ли другая версия набора спрайтов?
2. Я использую симулятор iPhone 5s. высота-100 будет в порядке. Но на iPad Air это будет большое дополнение сверху.
3. @SDmitry У вас есть файл GameScene «.sks»? Если это так, убедитесь, что он имеет надлежащие размеры и что режим масштабирования содержимого вашей сцены установлен в режим, который не позволяет сцене выходить за пределы экрана.