Ярлык набора спрайтов в углу

#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»? Если это так, убедитесь, что он имеет надлежащие размеры и что режим масштабирования содержимого вашей сцены установлен в режим, который не позволяет сцене выходить за пределы экрана.