【问题标题】:How to distribute space equally between multiple buttons?如何在多个按钮之间平均分配空间?
【发布时间】:2014-12-05 06:13:04
【问题描述】:

我在视图容器中有四个按钮。我想让按钮之间的空间根据设备的屏幕尺寸自动调整大小。

视图容器的约束如下:

  • 水平和垂直到Superview
  • 等于Superview
  • Superview 的前导和尾随空间

然后我限制每个按钮:

  • 等于和高度
  • 视图容器的垂直空间。

在这一点之后,无论我尝试什么组合,我都无法让按钮之间的空间相等。我尝试给他们水平间距约束,但这并没有成功。附上我想要制作的效果。谁能解释一下如何做到这一点?

【问题讨论】:

标签: ios iphone autolayout xcode6


【解决方案1】:

在按钮之间放置空的UIViews,并给它们以下约束:

  • 到 0 的相邻按钮的前导和尾随空格

  • 等宽

  • 宽度 >= 0

  • 一些高度限制

这应该可以解决问题

【讨论】:

【解决方案2】:

创建具有等分widthUIButtons 的最简单方法如下:

像这样创建 6 UIButtons

UIButton *button1 = [UIButton buttonWithType:UIButtonTypeSystem];
button1.translatesAutoresizingMaskIntoConstraints = NO;
[button1 setTitle:@"Btn1" forState:UIControlStateNormal];

...为 6 个按钮执行 6 次,但是你喜欢然后将它们添加到视图中:

[self.view addSubview:button1];
[self.view addSubview:button2];
[self.view addSubview:button3];
[self.view addSubview:button4];
[self.view addSubview:button5];
[self.view addSubview:button6];

UIView 底部固定一个按钮:

那么,

[self.view addConstraint:[NSLayoutConstraint constraintWithItem:button1 attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTop multiplier:1 constant:0]];

然后告诉所有按钮宽度相等,并在宽度上均匀分布:

NSDictionary *views = NSDictionaryOfVariableBindings(button1, button2, button3, button4, button5, button6);

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[button1][button2(==button1)][button3(==button1)][button4(==button1)][button5(==button1)][button6(==button1)]|" options:NSLayoutFormatAlignAllBottom metrics:nil views:views]];

一切顺利...

【讨论】:

  • 我已经把属性改成了NSLayoutAttributeTop,现在你可以查看代码了,你可以看到UIView顶部的所有按钮
  • 这不是他问的。这样按钮就会占据所有的水平空间,对吧?每个按钮之间不会有任何空白。
【解决方案3】:

请参考此链接:

Evenly space multiple views within a container view

我认为它适合你。

【讨论】:

    猜你喜欢
    • 2021-12-14
    • 1970-01-01
    • 2018-11-25
    • 1970-01-01
    • 1970-01-01
    • 2011-01-18
    • 2019-12-17
    • 1970-01-01
    • 2013-07-19
    相关资源
    最近更新 更多