【问题标题】:Xcode 4 and Interface Builder: Editing Vertical Spacing Constraint (Anchor Top, not Bottom)Xcode 4 和 Interface Builder:编辑垂直间距约束(锚定顶部,而不是底部)
【发布时间】:2012-12-15 23:29:43
【问题描述】:

我有一个在设备上布局不正确的小部件(它在 IB 中的看起来正常,但不太正确)。小部件是一个标签,它位于屏幕中间。 Interface Builder 给它一个带有“底部锚点”的垂直空间约束。在这里,bottom 表示屏幕的底部(而不是下方的小部件,或锚定到顶部屏幕)。

我在检查器中,但我看不到如何更改为顶部锚点(最好是上面的小部件)。我特别尝试阅读 Apple 的 docsEditing Constraints,但它令人困惑,并没有解释如何进行更改(或者我错过了讨论 - 这是 7 句话)。

下面是界面生成器下的屏幕截图,显示了固定在屏幕底部的垂直空间约束。它的属性还有很多不足之处——平等、恒定和优先级并没有真正的帮助。

有人知道如何编辑约束吗?具体来说,我想 (1) 将垂直间隔的锚点从底部 更改为 顶部; (2) 锚定在上面的小部件上,而不是屏幕顶部。

【问题讨论】:

  • 我认为带注释的屏幕截图会很有帮助
  • @ckhan - 完成,好建议。

标签: ios xcode cocoa-touch interface-builder xib


【解决方案1】:

按住 shift 键同时选择“嵌入”和“计算”元素。

选择这两个元素后,使用约束菜单:

这个菜单,连同精心挑选的元素,是在 IB 中愉快地编辑约束的核心。在您的情况下,选择中心项目,即 Pin 菜单。选择垂直间距 - 这将在两个元素之间的垂直间距上创建一个新的约束。或者,选择单个元素并将“Top space to superview”固定到顶部而不是底部。

您现在可以选择并删除视图底部的垂直间距。 IB 之前不会让你删除它,因为你必须有一套完整的、明确的约束。添加新的垂直间距约束后,您现在有了它。

为了进一步说明,这是一个空的视图控制器,我拖了一个文本字段:

所有约束都是紫色的,这意味着 IB 已经为我添加了它们(它们是系统约束)并且它们不能被删除 - 它们是定位和调整文本字段大小所需的最小约束。

现在,我将选择文本字段,并将顶部空间固定到超级视图:

现在您可以看到两个垂直空间约束已变为蓝色(它们现在是用户约束)并且它们在编辑器中的外观更厚。这意味着可以删除其中之一。我选择底部空间的约束并点击删除:

请注意,这仍然具有用户约束的外观 - 但如果我尝试删除它,IB 将自动重新创建固定到超级视图底部的系统约束,让我们回到第一格。

我已经写过关于这个以及类似的自动布局主题,here

【讨论】:

  • 我很乐意给你 100 分的答案。 Stack Overflow 需要一个像电子游戏一样的生态系统。
  • 是否可以选择像 Android 这样的默认“流”布局?我发现偶尔的 Xcode 选择锚定到底部很奇怪。
  • 不,恐怕你被 IB 给你的“帮助”困住了!
  • 关于您之前的评论,请看这里:meta.stackexchange.com/questions/16065/… ;)
  • 感谢您的链接。我进行了快速扫描,但没有跳出转移点。文章本身很长,我暂时没有时间看,想知道应该怎么做才能给你转积分。
【解决方案2】:

我得到了一个关于自动布局的词。如果有效,则有效,但如果无效,则使用老式方式(使用代码)

【讨论】:

  • 自动布局可用于代码或界面构建器。你在说什么?
  • 对于一个不需要在 5.0 上支持并且只为 ios 6.0 设计的项目,自动布局工作得很好。但是,当您有一个使用旧弹簧和支柱并在其中包含动画的项目时,当您打开自动布局时,一切都变得松散了。突然,动画停止工作或工作不正常。元素无处不在。所以对于静态内容,使用 Autolayout 可能对你有用,但对于动态内容(如动画),你必须依靠使用代码添加 NSLayoutConstraints 并使其看起来像不使用 autolayout 的版本
猜你喜欢
  • 1970-01-01
  • 2012-08-13
  • 2010-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-10
  • 1970-01-01
  • 2016-01-09
相关资源
最近更新 更多