在Xcode 5中为superview添加间距约束

Can*_*ğlu 74 xcode interface-builder ios autolayout xcode5

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

在此输入图像描述

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

更新:我在同一件事的另一个项目中遇到了更多麻烦.我正在尝试通过CTRL将我的控件拖到顶部布局指南的顶部布局指南顶部的顶部布局指南,并且它正试图将我的控件底部变为布局指南(约-470)这是没有任何意义的,因为控件应该在可变高度的屏幕中布局自己(例如常规和4英寸iPhone,以及未来可能的其他布局......),而不是控制我的控制顶部.以下是正在发生的事情的屏幕截图:

在此输入图像描述

我在约束中得到这个:

在此输入图像描述

我怎样才能让界面生成器对准视图顶端布局指南?

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

Jar*_*rig 94

要在视图及其"超级视图"(如"底层空间到超级视图")之间添加约束,可以使用文档大纲(Interface Builder的左侧部分).

在文件大纲中:

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

ctrl-从视图拖动到'superview(反之亦然) 选择要添加的约束

  • 每当我尝试像这样添加"顶部空间到顶部布局指南"约束时,它会将其转换为具有较大负值的"底部空间到顶部布局"约束.这是一个Xcode错误,还是我做错了什么? (4认同)
  • 刚弄清楚我自己的问题.视图位于布局指南之上(因为它来自iOS 6),因此xcode试图变得聪明而不是按照它所说的去做.解决方案是选择所有内容并将其拖放到布局指南下方,尽管我试图让Xcode自动执行此操作. (3认同)
  • 看起来"表视图"和"顶部布局指南"之间的"垂直空间"约束不希望为零或负数.您可以执行以下操作:1)将"表视图"向下移动至少1个点,使其不与"顶部布局指南"直接相邻.2)在`Table View`和`Top Layout Guide`之间设置`Vertical Space`约束 - 它应该从顶部开始.3)将"表视图"移回到与"顶部布局指南"直接相邻的位置.4)将"垂直空间"约束'值固定为零. (3认同)

kba*_*all 48

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

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

编辑> Pin> Topview到Superview

或者你想要的任何约束.

  • 这一点特别有用,因为尝试从上下文菜单中获得相同的结果,或者控制拖动从不提供选项"顶级空间到超级视图"它始终是"顶部空间到顶部布局指南"(Xcode51DP) (7认同)
  • 这次真是万分感谢.如上所述,如果您的父视图是视图控制器的视图,Xcode似乎只想提供"顶部空间到顶部布局指南",这并不总是您想要的.特别是在处理自动占用顶部布局空间的控件时. (7认同)