Равномерное размещение UIView одинакового размера в суперпредставлении с использованием автоматического макета в iOS 6

Мне нужно, чтобы ряд кнопок был равномерно размещен в супервизоре по горизонтали с использованием автоматического макета. Здесь я хочу сохранить размеры подвидов одинаковыми, только центр подвидов будет размещен таким образом, чтобы между ними было равное количество пробелов.

Примечание. Я не хочу устанавливать размер супервизора, я хочу, чтобы все было автоматически макетировано.

Пожалуйста, помогите, я застрял!!

Спасибо!!


person infiniteLoop    schedule 22.04.2013    source источник


Ответы (1)


Вы можете создать столько UIView, сколько у вас есть кнопок, и центрировать кнопки внутри представлений, представления можно выровнять друг за другом, используя этот код:

[constraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[view1][view2][view3]|"
                                                                         options:0
                                                                         metrics:nil
                                                                           views:views]];

Убедитесь, что вы сначала удалили существующие ограничения из супервизора, используя:

[self.view removeConstraints:self.view.constraints];

и в viewDidLoad отключите автоматическое преобразование размера:

[self.view setTranslatesAutoresizingMaskIntoConstraints:NO];
person Whakkee    schedule 23.04.2013
comment
Спасибо за ответ !! но здесь я не хочу, чтобы виды располагались один за другим (ведущий-конечный), а должны быть расположены таким образом, чтобы они выглядели равномерно распределенными по ширине с общим зазором между ними. - person infiniteLoop; 24.04.2013
comment
Да, именно поэтому вы центрируете кнопки внутри представлений, чтобы они были равномерно распределены. Представления расположены спиной к спине, а кнопки расположены по центру внутри них. - person Whakkee; 24.04.2013
comment
Да, я делал так же, как вы предложили, в качестве обходного пути. - person infiniteLoop; 07.05.2013
comment
Но я предполагаю, что должен быть какой-то способ добиться этого без дополнительных представлений в среде Auto Layout. - person infiniteLoop; 07.05.2013
comment
Но здесь будут использоваться стандартные поля между представлениями, верно? Как бы вы сделали это на заказ? - person Javier Soto; 06.08.2013