2014-02-19 14 views
0

Я использую Autolayout на iOS 7 для разработки своих представлений. Я могу изменить свой вид автоматически, и все мои объекты, но у меня есть проблема: У меня есть 4 ярлыка один рядом с другим. Эти ярлыки находятся в UIView, и когда мой UIView изменяет размер (ширину), мне бы хотелось, чтобы мои метки перемещались автоматически, но все же были видны.iOS Autolayout изменить размер этикеток и пробелов между ними

Вот вещь: enter image description here

И когда UIView изменении размеров: enter image description here

Вы знаете, что я имею в виду? Я установил правую метку в правой части представления. Оно работает. Для первого ярлыка это не проблема. Но для ярлыков 2 и 3 я не знаю, как адаптировать минимальное пространство между ними.

Все предложения и идеи хорошо оцениваются. Спасибо.

С уважением, Lapinou.

ответ

1

Использование этой UIView категории: https://github.com/jrturton/UIView-Autolayout

Вы могли бы добиться этого очень легко ...

NSArray *views = @[ button1, button2, button3, button4 ]; 
[self.containerView spaceViews:views onAxis:UILayoutConstraintAxisHorizontal withSpacing:10 alignmentOptions:0]; 

Edit: На самом деле ... Это делает ширину каждой кнопки динамична и может не соответствовать вашим потребностям в точку.

+0

Awesome! Этот проект действительно полезен. Спасибо! – Lapinou

0

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

[NSLayoutConstraint constraintWithItem:self.label2 
           attribute:NSLayoutAttributeCenterX 
           relatedBy:NSLayoutRelationEqual 
            toItem:self.view 
           attribute:NSLayoutAttributeCenterX 
           multiplier:1.0 
            constant:self.view.frame.size.width/2.0]; 

label2 будет иметь константу, как указано выше, но метка 3 будет иметь эту константу как отрицательное значение.

1

Я думаю, что вы должны работать с Equal Widths ограничения и придерживаться левой кнопки на левой стороне и то же самое для правой кнопкой и, наконец, Horizontal Space Constraint для каждой кнопки равным 0.

Это должно работать ...

enter image description here

+0

+1, потому что это альтернативное решение;) – Lapinou

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