iOS 7自动布局Y位置/高度缺少约束

时间:2014-07-01 21:46:34

标签: ios iphone autolayout

我正在尝试使用Xcode 5.1.1为iOS 7 iPhone应用程序设计视图。我的目标是iPhone 4s和5+视图端口。以下是我的观点:

View with problems

此视图的目的是充当应用程序的主菜单。 ImageView是应用程序的徽标,每个按钮都是一个选项。我遇到的麻烦是试图在视图上设置正确的约束,这样一切都会从iPhone 5到4s的高度缩小。无论我尝试哪种组合,我总是最终得到"需要约束:Y位置或高度。"在Missing Constraints下,图像和所有按钮的Misplaced Views下的高度不正确。

如果我尝试使用"添加缺失的约束",Xcode使所有按钮的高度相同,但最后一个按钮除外。最后一个按钮缩小到文本。

为了让这个工作正常,我错过了什么?谢谢!!

编辑:根据反馈,我做了以下限制:

图像视图:固定到顶部/底部/前导/尾随Superview。固定高度。底部空间到黄色按钮

所有按钮:彼此平等高度。根据生成的约束,似乎所有其他按钮都会看到黄色按钮的高度。

黄色按钮:图像视图的顶部空间,超级视图的尾随/前导空间,红色按钮的底部空间

红色按钮:黄色按钮的顶部空间,超级视图的尾随/前导空间,绿色按钮的底部空间

绿色按钮:顶部空间到红色按钮,尾随/前导空间到超级视图,底部空间到棕色按钮

棕色按钮:顶部空间到绿色按钮,尾部/前导空间到超级视图,底部空间到橙色按钮

橙色按钮:顶部空间到棕色按钮,尾随/前/下空间到Superview

如果我这样做,4"在Retina视图中。如果我把它切换到3.5"查看一切看起来不错,并在模拟器中运行良好。如果我把它切换回4"查看,所有按钮,但黄色错位高度:

Messed up heights

不确定是什么造成的。如果有帮助,我也可以上传我的Xcode项目的副本。

1 个答案:

答案 0 :(得分:8)

看起来你想要所有按钮的高度相等,看起来像imageview也有一个已知的高度。这应该适合你:

1:将视图的顶部,左侧,右侧和底部的所有元素0 px固定在它们旁边。对于按钮,它将是y轴上方和下方的按钮,以及x轴上的超视图 2:为imageView指定高度 3:命令单击并选择所有彩色按钮并将其高度均匀地固定。编辑 - > Pin - >高度同样。

因为autolayout知道imageview的起始位置(从superview顶部0 px)并且它知道高度,所以它将知道黄色按钮顶部的放置位置。在底部,它知道橙色按钮应固定在底部。 Autolayout要弄清楚的唯一事情就是根据相等的高度约束,每个按钮的高度应该是多少。

编辑 - 更详细的屏幕截图说明

对于第1步,选择顶部imageview并选择编辑器 - > pin - >然后一次添加一个前导(通常在大多数语言中保留),尾随,顶部和底部。如下所示,或者您可以使用底部的按钮,或者您可以使用底部的图钉按钮(右侧6)批量添加它们。我建议使用pin按钮,速度更快。单击小虚线以选择要添加的约束。

enter image description here enter image description here

步骤3是将高度均匀地固定,以便选择所有彩色视图并将高度固定为相等。由于顶部元素(Imageview)被打到顶部并且具有已知高度,并且底部被固定到屏幕的底部,所以其余视图变得像手风琴的折叠,拉伸和收缩以填充其余部分可用空间。等宽度约束确保它看起来正确。如果没有它,它们就是每个视图应该有多大的多个解决方案,因此您可能最终得到一些小的,一些大的,一些可能看不见的。

enter image description here