在Xcode 4的Interface Builder/Storyboard中手动指定约束

6
这似乎是一个非常基本的问题,但我找不到答案。当我在故事板中添加元素,或者拖动它们或调整大小时,Xcode会自动添加和删除约束以描述它们的大小和位置。现在,一旦Xcode创建了特定类型的约束-比如高度约束-我知道我可以通过属性检查器修改它的属性-关系、常量和优先级,在高度约束的情况下。但我无法弄清楚如何手动添加或删除给定类型的约束,而不是依靠Xcode的魔力来完成这项工作。例如,在我的当前场景中,我有一个包含工具栏和表格视图的ViewController。现在,我确切地知道我想要使用哪些约束来描述这两个视图的垂直定位和大小: 工具栏顶部与屏幕顶部的垂直空间为0 工具栏具有固定高度 表视图底部与屏幕底部的垂直空间为0 表视图顶部与工具栏底部的垂直空间为0 这样,表视图的高度将根据屏幕大小进行相应调整。然而,Xcode却认为这不是我想要的,并且强加给我以下约束(无论我随机拖动什么并祈祷多少次,它似乎都不想改变): 工具栏顶部与屏幕顶部的垂直空间为0 工具栏底部与屏幕底部的垂直空间为526 表视图与屏幕底部的垂直空间为0 表视图具有固定高度526 因此,当我尝试在较小的屏幕或容器上查看我的ViewController时,一切都会出错。无法在我确切知道自己需要什么时手动设置自己的约束非常令人沮丧。我如何明确删除Xcode自动创建的无用约束并手动添加自己的约束呢?

只是提醒一下 - Xcode 5 DP 不会在您没有要求的情况下触及您的约束条件,即使您有模棱两可的约束条件。目前,Xcode 4 的使用体验确实不太好。 - Mike Weller
现代版本的Xcode中已经不再存在这个问题。 - jtbandes
1个回答

1
在IB/storyboard中使用约束的问题在于Xcode永远不会允许您拥有模棱两可的约束,即使您正在编辑它们时也是如此。因此,每当您想要编辑多个约束时,Xcode可能会自动添加一些约束以防止出现不允许的状态,这可能会让您感到痛苦。
我发现的解决方法是在设置其他约束时,在四个边缘上添加虚假约束。这样可以让IB保持稳定,防止其添加完全无用的内容。
您可以从顶部菜单中添加约束。单击对象,然后从顶部菜单中选择“编辑器”。您可以使用“对齐”和“固定”子菜单添加约束(稍后可以进行编辑)。
注意:并非所有约束都可以在IB中添加。例如,纵横比只能通过代码完成。
附注:Xcode只允许您删除多余的约束,即不会留下模棱两可状态的约束。因此,为了删除“b****t”约束,您必须首先添加足够的其他约束以创建允许的状态。

你在四个边缘上添加了什么约束条件? - expert
1
任何东西,真的。这只是一个临时修复,当您正在编辑其他约束以防止Xcode 4搞砸一切时使用 :) 完成编辑后,请将其删除。例如,只需将每侧固定到超级视图即可。 - user1459524

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