2015-03-14 2 views
3

Я новичок в разработке Swift и ios. У меня есть 6 ярлыков и горизонтальная SKScene в моем приложении. Я бы хотел, чтобы эти шесть ярлыков были подобраны красиво и автоматически. Теперь я зафиксировал позиции, и выравнивание всегда выглядит ужасно на каком-то экране, в то время как хорошее на другом.Swift: программно выровнять метки для разных размеров экрана IOS

Я не использовал раскадровки или другие графические редакторы для создания ui, но все сделано в коде. Поэтому я ищу программное решение (примеры кода) для обработки выравнивания.

ответ

1

Вы можете выровнять метки (скажем, в центре экрана) следующим образом.

var label1 = UILabel(CGRectMake: 0, 0, 200, 40) 
label1.center = CGPointMake(UIScreen.mainScreen().bounds.size.width/2, 30) 

var label2 = UILabel(CGRectMake: 0, 0, 200, 40) 
label2.center = CGPointMake(UIScreen.mainScreen().bounds.size.width/2, label1.center.y + 30) 

и так далее. Просто укажите основные границы экрана, а не статические точки для выравнивания, чтобы они были центрированы в любом размере экрана.

+0

Насколько я понимаю, автор имеет дело с SceneKit или SpriteKit (или Cocos2D). – lchamp

+0

Спасибо за ответ и извините за двусмысленность моего вопроса. Я сделал именно это значение, я использую стиль «bounds.size.width/2» для добавления меток. Я все еще называю это hardcoding. У меня есть 6 меток подряд, поэтому пропорции между разными метками и краями экрана различаются для разных устройств. По моему мнению, у IOS есть автоматический механизм «пропорциональности», но я не знаю, как это работает. Я должен изменить свой вопрос. – user3673836

+0

Или, например, есть контейнер, в который я мог бы установить все ярлыки, жесткий код пропорциональных пространств, чтобы хорошо выглядеть между метками, а затем центрировать контейнер с помощью «bounds.size.width/2»? – user3673836

1

В результате я создал пустой SKSprite, в который я включил SKLabels. Теперь я могу контролировать смешение расстояний между метками, но выравнивание верхнего уровня спрайта в середине экрана, несмотря на размер экрана.

2

Если вы хотите разместить их в середине экрана по горизонтали, но и дать им различные Y позиции, вы могли бы просто сделать что-то вроде этого для каждой метки:

label.position = CGPointMake(CGRectGetMidX(self.frame),CGRectGetMaxY(self.frame) * 0.80) 

разместить их на разных у позиций , просто умножьте на maxY на другое десятичное число. Таким образом, все метки выравниваются вдоль оси x и отображаются в разных положениях y, например столбец, и они будут отображаться таким образом при каждом размере экрана, поскольку они расположены относительно размера экрана, а не в фиксированном положении ,

Смежные вопросы