AutoLayout可以平均分配多个按钮吗?

时间:2011-11-28 17:12:21

标签: cocoa osx-lion

我正在尝试创建一个包含垂直放置的按钮的视图,我希望在调整窗口大小时按钮之间的空格相等。此视图上的约束(使用可视格式)为:

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 个答案:

答案 0 :(得分:10)

在每对按钮之间创建不可见的视图,然后将这些视图的宽度限制为相等。

N:| - [button1的] [spacerView1] [BUTTON2] [spacerView2] [BUTTON3] - |

然后创建一个约束,将spacerViews设置为具有相同的宽度,以及约束条件,即第一个spacer视图的宽度应该> = 0。

答案 1 :(得分:4)

布里奇曼是对的,但我想补充一下。

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

更简洁一点。

您不需要在-s之间放置0。 您的水平间距也是如此

H:|[button1]|
H:|[button2]|
//etc...

答案 2 :(得分:3)

您应该将按钮嵌入NSMatrix设置为autoresizesCell的{​​{1}},而不是使用自动布局约束。这将自动处理间距,而不会看到不可见的间隔视图。