我能在Interface Builder中移动自动布局约束吗?

5
有时自动布局约束会贴错锚点 - 比如当我想将一个控件锚定到它上面的另一个控件,但是自动布局约束却被锚定到了窗口底部。有没有办法移动这个约束?ASCII艺术图应该能更清晰地说明问题。这就是我的情况:
+------------------------+
|                        |
| [x] Some checkbox      |
|                        |
| [x] Another checkbox   |
|     |                  |
|     | ← autolayout     |
|     |   constraint     |
|     |                  |
+-----+------------------+

我希望你能为我提供以下内容:

+------------------------+
|                        |
| [x] Some checkbox      |
|     | ← A.C.           |
| [x] Another checkbox   |
|                        |
|                        |
|                        |
|                        |
+------------------------+

我可以通过将下方的复选框向上移动来将约束锚定到上方复选框,但这不是我想要的,我希望垂直空间更大。(这些复选框只是为了说明,我的实际用例有不同的视图。)

3个回答

7
  1. 选择2个复选框
  2. 在界面构建器的右下角点击"H"图标
  3. 选择垂直间距

enter image description here


现在选择无用的约束条件并删除:

enter image description here


+1 你刚刚让我免于疯狂。我已经为了《Learn Cocoa on the Mac》这本书中的布局挣扎了几个小时,但只是越来越糟糕。这正是我需要解决问题的东西。 - MetalMikester

1
尝试将下面的复选框移动,使其与上面的复选框之间有一个支撑。 然后单击支撑并单击右侧面板中的属性框。 在那里,您应该能够取消选中“标准”框并将其设置为所需的间距。

1
不,您不能移动约束或将其更改为相对于其他视图。就像David Chu所说的那样,您可以移动视图,直到它自动获取您想要的约束类型,然后更改约束的值以将视图移回您想要的位置。但是,您也可以手动创建所需的约束,然后删除您不需要的自动约束(有时可能会有一些困难)。以下是您的情况如何操作:
选择2个复选框,然后使用“编辑器>固定>垂直间距”菜单添加所需的约束(或使用IB布局视图右下角3个按钮中间的一个来获取相同的菜单)。此时,不需要的自动约束应变得多余并从紫色变为蓝色。然后,您可以选择它并将其删除。每种约束都可以使用这些固定和对齐菜单中的项目创建。
我发现始终可以获得所需的约束,尽管这是与Xcode添加的自动约束进行斗争的过程,并且有时需要解决为什么它们无法从紫色变为蓝色的难题。例如,在添加一些自定义约束后直接移动视图,您会发现Xcode可能已删除了您添加的大多数约束并重新添加了自动约束,甚至是窗口中其他看似随机的视图,而不仅仅是您移动的那个!祝好运。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接