Может ли AutoLayout одинаково разместить несколько кнопок? - PullRequest
8 голосов
/ 28 ноября 2011

Я пытаюсь создать вид, который содержит несколько кнопок, расположенных вертикально, и я хотел бы, чтобы промежутки между кнопками были равны при изменении размера окна.Ограничения (с использованием визуального формата) в этом представлении:

H:|-0-[button1]-0-|
H:|-0-[button2]-0-|
H:|-0-[button3]-0-|
H:|-0-[button4]-0-|
V:|-0-[button1]-(>=0)-[button2]-(>=0)-[button3]-(>=0)-[button4]-0-|

Кнопки отображаются правильно, за исключением того, что учитывается только один из трех пробелов, определенных как> = 0, тогда как другие пробелыостаются нулевыми (макет неоднозначный).

Есть ли способ установить эти три пробела равными с помощью AutoLayout?

Ответы [ 3 ]

10 голосов
/ 28 ноября 2011

Создайте невидимые виды, которые находятся между каждой парой кнопок, а затем ограничьте ширину этих видов равными.

V: | - [button1] [spacerView1] [button2] [spacerView2] [button3] - |

Затем создайте ограничение, устанавливающее spacerViews для одинаковой ширины, и ограничение, что ширина первого представления spacer должна быть> = 0.

4 голосов
/ 28 сентября 2012

Бриджимэн прав, но я хотел бы добавить.

V:|[button1][spacerView1(>=0)][button2][spacerView2(==spacerView1)][button3][spacerView3(==spacerView1)][button4]|

Чтобы быть немного более кратким.

Вам не нужно ставить 0 между -s.То же самое относится и к вашему горизонтальному интервалу

H:|[button1]|
H:|[button2]|
//etc...
3 голосов
/ 27 января 2012

Вместо использования ограничений для автоматического размещения вы должны встроить кнопки в NSMatrix, для которого autoresizesCell имеет значение YES.Это будет обрабатывать интервал автоматически без невидимых разделителей.

...