在Xcode 5中向Superview添加间距约束


74

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

在此处输入图片说明

我想在文本视图中添加“底部空间以供超级视图”约束。它说“间隔到最近的邻居”,但是我不想创建“最近的邻居”的约束,我的文本视图下还有其他内容,也不想为此创建约束。如果我的文本视图下没有其他对象,则它将正确添加一个约束到容器。但是,如果我尝试更改任何内容,那么一切都会变得混乱:我需要将所有视图移到其他位置,然后添加约束,然后添加将其他视图移回。如果我在文本视图和UI元素(在这种情况下为按钮)之间添加约束,那么它将无法正常工作(一切似乎正确:按钮对superview的底部具有约束,文本视图的垂直间距与按钮,并且没有冲突的约束)。UI元素以不同(3.5英寸)屏幕方向出现在屏幕边界之外。Interface Builder是否存在错误,还是我缺少某些东西?当我可以正确设置所有内容时,当我调整界面生成器屏幕的大小时,我的控件似乎仍然超出范围,但是可以在模拟器/设备上以3.5英寸正确显示。在Xcode 5中使用新的Interface Builder约束设计UI的“最佳实践”是什么?

更新:我在另一个项目中遇到同样的问题。我试图通过将CTRL拖动到显示“顶部布局指南”的位置来完全将视图的顶部固定到顶部布局指南,并且试图将控件的底部保留到布局指南中(大约-470点),而不是让控件的顶部冗长,这没有任何意义,因为控件应该将自己布置在可变高度的屏幕上(例如,常规和4英寸iPhone,以及将来可能的其他布局。)。这是正在发生的情况的屏幕截图:

在此处输入图片说明

我在约束中遇到了这个问题:

在此处输入图片说明

如何使Interface Builder对齐视图顶部和顶部布局指南?

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


嘿,将视图连接到《顶部布局指南》时,您遇到的错误与您相同。起初它使我很困惑,但是发现了与您相同的解决方法。希望在以后的更新中解决此问题……
Taum

我希望如此..悲伤地看到一个公司谁确实关心设计,有自己的产品设计的错误,用于设计核心接口。
CanPoyrazoğlu2013年

此解决方法有效!
Leszek Zarna 2014年

Answers:


94

要在视图及其上级视图之间添加约束(例如“下级空间到上级视图”),可以使用文档大纲(Interface Builder的左侧)。

在文档大纲中:

  1. 按住Ctrl键,然后从视图拖动到其超级视图(反之亦然)。
  2. 选择要添加的约束(在此示例中为“容器的底部空间”)。

按住Ctrl键从视图拖动到其超级视图(反之亦然) 选择要添加的约束


如果您想在视图中的按钮和视图下方的选项卡栏之间设置约束(假设按钮的视图包含在选项卡栏控制器中),这也行得通吗?
AlexR 2013年

1
如果要在按钮和选项卡栏之间设置约束,则可以在Ctrl中将ctrl拖动到按钮的“底部布局指南”中。
贾里格

4
每当我尝试像这样添加“顶部空间到顶部布局指南”约束时,它将变成带有较大负值的“底部空间到顶部布局指南”约束。这是Xcode错误,还是我做错了什么?
面包

3
只是想出了我自己的问题。该视图位于布局指南上方(因为它来自iOS 6),因此xcode试图变得聪明而不是按照它说的去做。解决方案是选择所有内容并将其向下拖动到布局指南下方,尽管我试图让Xcode自动执行此操作。
bugloaf

3
看起来Vertical SpaceTable View和之间的约束Top Layout Guide不希望是零或负数。您可以执行以下操作:1)Table View向下移动至少1个点,使其不直接与相邻Top Layout Guide。2)Vertical SpaceTable View和之间设置约束Top Layout Guide-现在应该从顶部开始。3)将您的Table View后退移至与相邻的位置Top Layout Guide。4)将Vertical Space约束的值固定为零。
Jarig

48

Jarig的回答很好,但有时可能会导致意外结果,如评论中所述。

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

编辑器>固定>要查看的顶部空间

或您想要的任何约束。


7
这一点特别有用,因为尝试从上下文菜单中获得相同的结果,或者拖动控件时从不显示“顶部空间进行超级视图”选项,它始终是“顶部空间至顶部布局指南”(Xcode51DP)
levigroker

7
这次真是万分感谢。正如上面直接提到的,如果父视图是视图控制器的视图,则Xcode似乎只想提供“顶部空间到顶部布局指南”,但这并不总是您想要的。尤其是在处理自动占顶部布局空间的控件时。
Michael McGuire 2014年

感谢您提供其他菜单。有三种创建约束的方法,它们并没有同等的条件。
保罗·索尔特

它对我的项目禁用了我该怎么办
codercat 2014年

1
谢谢。我在浪费大量时间尝试修复tableView的插图。我知道我必须固定顶部空间才能进行查看。但是所有其他方式都被禁用。你救了我一晚,现在我可以睡觉了。
MIWMIB 2014年

1

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

图片


1
它禁用模式我该怎么办
codercat

0

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.