2012-06-30 42 views
5

有时自动布局约束会捕捉到错误的锚点 - 就像我想要控件锚定到上方的控件并且自动布局约束被锚定到窗口底部一样。有没有办法移动约束? ASCII艺术应该让这个更清楚。这是我有:我可以在Interface Builder中移动自动布局约束吗?

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

这就是我想要的,而不是:

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

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

回答

7
  1. 选择2复选框
  2. 点击 “H” 图标,在界面生成器的右下角
  3. 选择垂直间距

enter image description here


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

enter image description here

+0

+1你刚才救了我的精神错乱。我一直在挣扎着从帐簿的布局在Mac上学习可可在过去的几个小时,我只是不停地让情况变得更糟。这正是我需要解决我的问题。 – MetalMikester

1

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

1

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

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

我发现,得到你想要的约束始终是可能的,尽管它针对的Xcode增加,有时一个谜自动约束的战斗中找到他们为什么不从紫色转变为蓝色。例如,在添加一些自定义约束后直接移动视图,您会发现Xcode可能删除了大部分您添加的约束并重新添加了自动约束,即使对于窗口中的其他看似随机的视图,也不仅仅是您感动!祝你好运。