【问题标题】:Add spacing constraint to superview in Xcode 5在 Xcode 5 中为超级视图添加间距约束
【发布时间】:2013-09-28 08:11:50
【问题描述】:

我正在 Xcode 5 中构建一个 iOS 应用程序,但在添加布局约束时遇到了问题。在 Xcode 4.x 中,我可以将前导/尾随/顶部/底部空格添加到容器(超级视图)到任何 UI 元素。现在,我只有这个选项:

我想在我的文本视图中添加一个“超级视图的底部空间”约束。它说“与最近邻居的间距”,但我不想创建对“最近邻居”的约束,我的文本视图下还有其他东西,我不想用它来创建约束。如果我的文本视图下没有其他对象,它会正确地向容器添加一个约束。但是,如果我尝试更改任何内容,一切都会搞砸:我需要将所有视图移动到其他位置,然后添加约束,然后添加将其他视图移回。如果我在文本视图和 UI 元素(在这种情况下是一个按钮)之间添加一个约束,它就不起作用(一切似乎都正确:按钮对超级视图的底部有一个约束,而文本视图有一个垂直间距约束)按钮,并且没有冲突的约束)。 UI 元素以不同的(3.5 英寸)屏幕方向显示在屏幕边界之外。 Interface Builder 是否存在错误,或者我遗漏了什么?当我可以正确设置所有内容时,当我调整界面构建器屏幕的大小时,我的控件似乎仍然超出范围,但在 3.5 英寸的模拟器/设备上正确显示。在 Xcode 5 中使用新的 Interface Builder 约束来设计 UI 的“最佳实践”是什么?

更新:我在另一个项目中遇到了更多的问题。我试图通过 CTRL 将我的控件拖动到它说“顶部布局指南”的位置来精确地修复视图的顶部到顶部布局指南,并且它试图将我的控件底部与布局指南相匹配(大约 -470点)而不是调整我的控件的顶部,这没有任何意义,因为控件应该在可变高度的屏幕中进行布局(例如常规和 4 英寸 iPhone,以及将来可能的其他布局..)。这是正在发生的事情的屏幕截图:

我在约束中得到了这个:

如何让 Interface Builder 将视图的 top 与顶部布局指南对齐?

更新 2:我找到了解决方法。我首先调整视图的大小以减小它的高度(因此它的顶部不会重叠或非常靠近顶部布局指南),然后我 CTRL+将其拖动到顶部布局指南。它似乎工作正常。连接后,我再次将视图调整为所需大小并选择Update Constraints。它可以工作,但仍然不是解决方案,因为它需要调整视图大小、连接、再次调整大小和更新约束。

【问题讨论】:

  • 您好,在将视图连接到顶部布局指南时遇到与您相同的错误。一开始我很困惑,但找到了和你一样的解决方法。希望这将在未来的更新中得到修复……
  • 我希望如此.. 看到一家真正关心设计的公司在自己用于设计核心界面的产品中出现设计错误,我感到很遗憾。
  • 此解决方法有效!

标签: ios xcode interface-builder autolayout xcode5


【解决方案1】:

要在视图和它的父视图之间添加约束(例如“到父视图的底部空间”),您可以使用文档大纲(界面生成器的左侧部分)。

在文档大纲中:

  1. 按住 ctrl 键并从视图拖动到其父视图(反之亦然)。
  2. 选择要添加的约束(在本例中为“容器底部空间”)。

【讨论】:

  • 如果您想在视图中的按钮和视图下方的选项卡栏之间设置约束(假设按钮的视图包含在选项卡栏控制器中),那也可以吗?
  • 如果你想在按钮和标签栏之间设置一个约束,你可以在文档大纲中从按钮到底部布局指南中按住 ctrl 键拖动。
  • 每当我尝试像这样添加“顶部空间到顶部布局指南”约束时,它都会将其变成具有较大负值的“底部空间到顶部布局”约束。这是 Xcode 的错误,还是我做错了什么?
  • 刚刚发现自己的问题。该视图位于布局指南上方(因为它来自 iOS 6),因此 xcode 试图变得聪明,而不是按照它所说的去做。解决方案是选择所有内容并将其拖到布局指南下方,尽管我试图让 Xcode 自动执行此操作。
  • 看起来Table ViewTop Layout Guide 之间的Vertical Space 约束不想为零或负数。您可以执行以下操作: 1) 将Table View 至少向下移动 1 点,使其不直接与Top Layout Guide 相邻。 2) 在Table ViewTop Layout Guide 之间设置Vertical Space 约束 - 现在应该从顶部开始。 3) 将您的Table View 移回与Top Layout Guide 直接相邻的位置。 4) 将Vertical Space 约束的值固定为零。
【解决方案2】:

Jarig 的回答很好,但有时会导致意想不到的结果,如 cmets 所述。

另一个选项是选择子视图并转到:

Editor > Pin > Top Space to Superview

或任何你想要的约束。

【讨论】:

  • 了解这一点特别有用,因为试图从上下文菜单中获得相同的结果,或者控制拖动永远不会出现选项“顶部空间到超级视图”它始终是“顶部空间到顶部布局指南” (Xcode51DP)
  • 谢谢你。正如上面直接提到的,如果您的父视图是您的视图控制器的视图,Xcode 似乎只想给“顶部布局指南的顶部空间”,这并不总是您想要的。尤其是在处理自动占据顶部布局空间的控件时。
  • 感谢您提供替代菜单。有 3 种方法可以创建约束,但它们并不都具有同等性。
  • 它在我的项目中被禁用了我能做什么
  • 谢谢。我浪费了很多时间试图修复 tableView 的插图。我知道我必须将顶部空间固定到 superview。但是所有其他方式都被禁用了。你拯救了我的夜晚,现在我可以睡觉了。
【解决方案3】:

现在似乎是底部边缘约束。 选择您的视图及其超级视图,点击“对齐”并检查“底部边缘”的东西

【讨论】:

  • 它禁用模式我能做什么
【解决方案4】:

如果您想像在 Xcode 4 中一样添加尾随或前导约束,请按住 CTRL 键从要添加约束的视图中心向左、向右、向上或向下拖动。然后您将看到一个窗口,您可以在其中选择要添加的约束(取决于您按住 CTRL 拖动的方向)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-30
    • 1970-01-01
    • 2015-06-25
    相关资源
    最近更新 更多