使用Cocoa Auto Layout中心两个按钮

Bar*_*bek 27 autolayout ios6

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

在此输入图像描述

我尝试了很多不同的方法但没有成功:(请帮帮我.

jma*_*hew 33

我是从记忆中写的,所以希望所有信息都是正确的.我正在使用XCode5.这是我从没有约束开始这样做的方式:

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

  2. 如果仍然选择了两个按钮,则添加约束以设置其Y位置."添加新约束"窗口中的上方或下方空格都可以.

  3. 现在选择Button 1并在Add Can Alignment Constraints窗口中添加对齐约束"Horizo​​ntal Center In Container",该窗口可从IB Canvas右下角的第一个按钮访问.默认情况下,添加约束的"常量"值为0.我们希望更改它,因为它是错误的.

  4. 此时,按钮1将有一个垂直穿过它的黄色条.这是一个警告,表示按钮的水平中心不等于容器的水平中心+约束的常量(0).该数字的竖线是按钮是如何遥远的中心.记住这个数字.

  5. 双击按钮1上的垂直黄色条(需要灵巧)或选择按钮1转到左侧窗格并单击标尺并"选择并编辑"名为"将中心X对齐到:"的约束.

  6. 标有"常量"文本框中输入步骤4中的数字.按钮1现在已满足其显示所需的所有约束.它有宽度,高度,Y(顶部空间或底部空间约束),现在是X(水平中心对齐).然而,按钮2仍然缺少其X位置,它可以从按钮1上退回.

  7. 选择按钮2,转到"添加新约束"窗口,然后将前导空格设置为按钮1(左侧栏位于顶部白框旁边).

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

  • 惊人.这教会了我关于自动布局的一些事情,除了实际修复我的问题,我不知道如何处理.谢谢! (5认同)
  • 有趣的黑客.但我想它不适用于动态元素宽度;) (2认同)

Bri*_*ell 9

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

@"[button][invisibleView(5)][button2(==button)]"
Run Code Online (Sandbox Code Playgroud)

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


iai*_*ain 5

这样做的另一个技巧是将右侧button的空间对准远离中心的空间的一半superview,并且左侧button2的空间大小是远离中心的空间的一半superview.

这只有在你只有一个仅围绕你想要居中的两个视图的超级视图时才能真正起作用.