Ios6 两个按钮居中,自动布局

Ios6 两个按钮居中,自动布局,ios6,autolayout,Ios6,Autolayout,我对Cocoa自动布局有问题,无法解决这个问题。 我想要实现的就是在视图中始终有两个按钮居中,如下所示 我尝试了很多不同的方法,但都没有成功:(请在此帮助我。自动布局的一个巧妙技巧是使用不可见视图作为分隔符。约束系统仍将它们按正常方式进行布局。在这种情况下,两个按钮之间的空间可以是不可见视图。您可以使用此约束字符串中的约束: @"[button][invisibleView(5)][button2(==button)]" 然后创建一个约束设置invisibleView.centerX=sup

我对Cocoa自动布局有问题,无法解决这个问题。 我想要实现的就是在视图中始终有两个按钮居中,如下所示


我尝试了很多不同的方法,但都没有成功:(请在此帮助我。

自动布局的一个巧妙技巧是使用不可见视图作为分隔符。约束系统仍将它们按正常方式进行布局。在这种情况下,两个按钮之间的空间可以是不可见视图。您可以使用此约束字符串中的约束:

@"[button][invisibleView(5)][button2(==button)]"

然后创建一个约束设置
invisibleView.centerX=superview.centerX

另一个技巧是将
按钮的右侧对齐,使其距离
superview
的中心为空间大小的一半,将
按钮2的左侧对齐,使其距离中心为空间大小的一半超级视图的


只有当你有一个超级视图,它只围绕着你想居中的两个视图时,这才真正起作用。

我是从内存中写的,希望所有的信息都是正确的。我使用的是XCode5。下面是我从没有限制开始做这件事的方法:

  • 选择两个按钮并添加约束以设置其高度和宽度 可从第二个窗口访问的“添加新约束”窗口中的宽度 IB画布右下角的按钮

  • 两个按钮仍处于选中状态时,添加约束以设置它们的Y轴 放置。在“添加新内容”对话框中,可以选择上面的空格或下面的空格 约束窗口就可以了

  • 现在选择按钮1并添加对齐约束“水平” 在“添加新路线约束”窗口中的容器中居中“ 可从IB画布右下角的第一个按钮访问。 默认情况下,添加的约束的“常量”值为0 我想改变这一点,因为这是错误的

  • 此时,按钮1将有一条黄色条垂直运行 这是一个警告,表明水平中心 按钮的高度不等于容器的水平中心 +约束的常数(0)。垂直条上的数字是按钮离中心的距离。记住这个数字

  • 双击按钮1(灵巧度)上的垂直黄色条 必需)或选择按钮1转到左侧窗格并单击 标尺和“选择并编辑”称为“对齐中心X”的约束 至:“

  • 在标有“常量”的文本框中输入步骤4中的编号。 按钮1现在已经满足了它的所有约束条件 显示。它有宽度、高度、Y(顶部空间或底部空间) 约束),现在是X(水平中心对齐)。按钮2, 然而,它仍然缺少它可以利用的X位置 按钮1

  • 选择按钮2,转到添加新约束窗口,然后简单地设置 按钮1的前导空格(顶部白色框的左侧栏)


  • 您现在应该有两个按钮,它们将始终保持在容器的中心,彼此间隔固定的宽度。

    基本上,我的
    UITableViewCell
    中有两个
    UIButtons
    ,它们位于下方,需要始终居中且宽度相同。这就是我在Xcode 7.2中工作的方式。我正在使用Swift顺便说一下,如果这有什么关系的话

  • 在左边的按钮中,我给了它一个前导底部约束
  • 在右边的按钮中,我给了它一个尾随底部约束
  • 在右按钮中,我给了左按钮一个前导空格
  • 最后,在我的右按钮中,我给了左按钮一个等宽度约束
  • 完成了

  • 您也可以通过以下方式实现

    1.左键取前导空格,右键取尾随空格。
    2.为前导和尾随约束构造出口

     __weak IBOutlet NSLayoutConstraint *leadingConstraint;
     __weak IBOutlet NSLayoutConstraint *trailingConstraint;
    
    3.计算公式如下所示的常数

    NSInteger constant = (SCREEN_WIDTH - (CGRectGetWidth(leftButton.frame) + CGRectGetWidth(rightButton.frame))) / 3;
        leadingConstraint.constant = constant;
        trailingConstraint.constant = constant;
    
    希望它能对你有所帮助。

    很好的建议。 在我的例子中,我希望按钮的中心距视图中心10个像素,这样我的数学就稍微不同了

    leadingConstraint.constant = (self.frame.size.width / 2.0) + 5.0;
    trailingConstraint.constant = (self.frame.size.width / 2.0) + 5.0;
    

    如果您有固定宽度的按钮,并且希望两个按钮之间的距离固定,则可以执行以下步骤:

  • 宽度
    高度
    约束
  • 添加到
    按钮1
    示例值:100高度和100宽度
  • 选择两个按钮并添加
    约束
    等宽
    等高
  • 按钮1
    按钮2
    之间添加
    水平间距
    。或者我们可以从
    按钮1
    按钮2
    添加
    前导空格。示例值:150
  • 选择
    按钮1
    并在容器中水平添加
    约束
    ,值为-125
  • 根据需要向容器添加其他
    约束
    垂直间距
  • 示例值125等于(
    button1
    width
    /2)+(
    水平间距
    /2),即100/2+150/2=125

    因此,将
    水平放置在容器中
    添加到-125将向左移动
    按钮
    ,这将使该布局在屏幕中居中

    布局和约束示例图片附在下面:


    哦,天哪!这太聪明了!但我想对于奇数个按钮,方法会相似,但略有不同,对吗?或者你可以将它们都放在容器视图中!然后将容器视图居中。这不起作用,因为你假设两个按钮的大小相同。可能是,但可能不是。尽管这样有两倍的我认为杰玛修的答案是正确的