ios - 在 Xcode 4 interfacebuilder/storyboard 中手动指定约束

标签 ios xcode4 interface-builder uistoryboard nslayoutconstraint

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

当我向 Storyboard 中的场景添加元素、四处拖动它们或调整它们的大小时,Xcode 会自动添加和删除约束以描述它们的大小和位置。

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

screenshot showing the same stuff described in the paragraph above

例如,在我当前的场景中,我有一个包含工具栏和表格 View 的 ViewController。现在,我清楚我想使用什么约束来描述这两个 View 的垂直定位和大小:

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

这样表格 View 的高度将根据屏幕大小适当调整。

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

  • 工具栏顶部距屏幕顶部的垂直间距为 0
  • 工具栏底部距屏幕底部的垂直间距为 526
  • 表格 View 距屏幕底部的垂直间距为 0
  • 表格 View 的高度固定为 526

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

screenshot of EVERYTHING GOING WRONG

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

最佳答案

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

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

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

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

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

关于ios - 在 Xcode 4 interfacebuilder/storyboard 中手动指定约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17469372/

相关文章:

iOS - iOS 8 中的 UIAlertView/UIAlertController 方向问题

iphone - 将 NSString 从一个 ViewController 传递到另一个 VC NSMutableArray

ios - Xcode 6.0 Swift,出现错误 : can't evoke'! =' with an argument list

ios - 导航 Controller 中的 UIViewController 并以模态方式呈现

iPhone 6 上的 IOS 应用程序 'The application could not be verified'

objective-c - 从工具栏项中删除焦点

ios - 将容器的来源设置为另一个容器的问题(Swift 4.2)

ios - 在 View 生命周期的什么时候,您可以通过 xib 加载 View 的最终帧?

ios - 在 iPad 10.5 英寸模拟器中运行应用程序?

iPhone/iPad : Image Resolution Question