5

有时,自动布局约束会捕捉到错误的锚点——比如当我希望将控件锚定到其上方的控件并且自动布局约束被锚定到窗口底部时。有没有办法移动约束?ASCII 艺术应该更清楚地说明这一点。这就是我所拥有的:

+------------------------+
|                        |
| [x] Some checkbox      |
|                        |
| [x] Another checkbox   |
|     |                  |
|     | ← autolayout     |
|     |   constraint     |
|     |                  |
+-----+------------------+

而这正是我想要的:

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

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

4

3 回答 3

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

在此处输入图像描述


现在选择无用的约束并将其删除:

在此处输入图像描述

于 2012-10-05T14:16:49.233 回答
1

不,您不能移动约束或将其更改为相对于不同的视图。正如 David Chu 所说,您可以移动视图,直到它自动获得您想要的约束类型,然后更改约束的值以将视图移回您想要的位置。但是,您也可以手动创建所需的约束,然后删除您不需要的自动约束(有时会遇到一些困难)。以下是您的情况:

选中 2 个复选框,然后使用 Editor > Pin > Vertical Spacing 菜单添加您想要的约束(或使用 IB 布局视图右下角的 3 个按钮的中间来获得相同的菜单)。此时,不需要的自动约束应该变得多余并从紫色切换到蓝色。然后,您可以选择它并删除它。可以使用这些 Pin 和 Align 菜单中的项目创建每种约束。

我发现获得你想要的约束总是有可能的,尽管它与 Xcode 添加的自动约束进行了一场战斗,有时还有一个难题是要找出为什么它们没有从紫色变为蓝色。例如,在添加一些自定义约束后直接移动视图,您会发现 Xcode 可能已经删除了您添加的大部分约束并重新添加了自动约束,即使对于窗口中其他看似随机的视图,而不仅仅是您的那个感动!祝你好运。

于 2012-08-28T18:28:22.377 回答
1

尝试移动下方的复选框,使其在自身和上方的复选框之间成为支柱。然后单击支柱并单击右侧面板中的属性框。在那里,您应该能够取消选中“标准”框并将其设置为您想要的间距。

于 2012-07-30T19:04:48.997 回答