【问题标题】:Manually specify constraints in Xcode 4 interfacebuilder/storyboard在 Xcode 4 interfacebuilder/storyboard 中手动指定约束
【发布时间】:2013-07-02 09:43:25
【问题描述】:

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

当我将元素添加到情节提要中的场景,或者拖动它们或调整它们的大小时,Xcode 会自动添加和删除约束来描述它们的大小和位置。

现在,一旦 Xcode 创建了特定类型的约束——比如高度约束——我知道我可以修改它的属性——RelationConstantPriority 在高度约束的情况下——通过属性检查器。我无法弄清楚的是如何手动添加或删除给定类型的约束,而不是依靠 Xcode 的魔法来为我这样做。

例如,在我当前的场景中,我有一个包含工具栏和表格视图的 ViewController。现在,我知道确切地我想用什么约束来描述这两个视图的垂直定位和大小:

  • 工具栏顶部距屏幕顶部的垂直间距为 0
  • 工具栏的高度是固定的
  • 表格视图的底部距离屏幕底部的垂直间距为 0
  • 表格视图的顶部距离工具栏底部的垂直间距为 0

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

然而,Xcode 以其智慧认为这不是我想要的,而是对我施加了以下限制(无论我随机拖动多少东西,它似乎都不想改变周围祈祷):

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

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

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

【问题讨论】:

  • 仅供参考 - Xcode 5 DP 永远不会触及你的约束,除非你要求它,即使你有模棱两可的约束。 Xcode 4 中的体验目前确实无法使用。
  • 这在现代版本的 Xcode 中不再是问题。

标签: ios xcode4 interface-builder uistoryboard nslayoutconstraint


【解决方案1】:

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

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

您可以从顶部菜单添加约束。单击对象,然后从到菜单中单击编辑器。您可以使用 Align 和 Pin 子菜单添加约束(稍后可以对其进行编辑)。

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

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

【讨论】:

  • 你在所有四个边上添加了什么约束?
  • 任何东西,真的。这只是在您编辑其他约束以防止 Xcode 4 将其全部搞砸时的临时修复:) 您在完成编辑后将其删除。例如,只需将每一侧固定到超级视图。
猜你喜欢
  • 2012-11-21
  • 2020-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-16
  • 2016-09-19
相关资源
最近更新 更多