在Xcode 4界面构建器/故事板中手动指定约束

Mar*_*ery 6 interface-builder ios xcode4 uistoryboard nslayoutconstraint

这似乎是一个非常基本的问题,但我找不到答案.

当我向故事板中的场景添加元素,或者拖动它们或调整它们的大小时,Xcode会自动添加和删除约束来描述它们的大小和位置.

现在,一旦Xcode中创造了一个特定类型的约束-说,一个高度约束-我知道,我可以修改它的属性- Relation,Constant并且Priority在高度约束的情况下-通过属性检查器.我无法弄清楚的是如何手动添加或删除给定类型的约束,而不是依靠Xcode的魔力为我这样做.

屏幕截图显示了上面段落中描述的相同内容

例如,在我当前的场景中,我有一个包含工具栏和表视图的ViewController.现在,我知道我想用来形容这两项意见的垂直位置和大小到底是什么制约因素:

  • 工具栏顶部的屏幕顶部有垂直空间0
  • 工具栏具有固定的高度
  • 表格视图的底部从屏幕底部有垂直空间0
  • 表格视图的顶部从工具栏底部有垂直空间0

这样,表格视图的高度将根据屏幕大小进行适当调整.

然而,Xcode凭借其智慧决定这不是我想要的,而是对我造成了以下限制(无论我多少随意拖动周围的东西并祈祷它似乎都不想改变):

  • 工具栏顶部的屏幕顶部有垂直空间0
  • 工具栏的底部有从屏幕底部开始的垂直空间526
  • 表格视图从屏幕底部有垂直空间0
  • 表格视图的固定高度为526

因此,当我尝试在较小的屏幕或容器中查看我的ViewController时,一切都会出错:

一切都错了的截图

当我确切地知道我需要什么是令人沮丧的时候,无法手动设置我自己的约束.如何明确删除Xcode自动创建的废话约束并手动添加我自己的约束?

use*_*524 1

在 IB/storyboard 中使用约束时的问题是 Xcode 永远不会允许您有不明确的约束。曾经。包括您在编辑过程中的时间。因此,每当您想要编辑多个约束时,Xcode 可能会决定自动添加一些约束以防止出现不允许的状态。

这可能会很痛苦。我发现的工作是在设置其他约束时在所有四个边缘上添加虚假约束。希望这可以让 IB 受到控制并防止它添加完全愚蠢的东西。

您可以从顶部菜单添加约束。单击该对象,然后从“至”菜单中单击“编辑器”。您可以使用“对齐”和“固定”子菜单添加约束(稍后可以对其进行编辑)。

注意:并非所有约束都可以在 IB 中添加。例如,长宽比只能在代码中完成。

附言。Xcode 只允许您删除多余的约束,即不会留下不明确状态的约束。因此,为了删除“b* * **t”约束,您必须首先添加足够的其他约束来创建允许的状态。