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

11

我正在尝试使用Xcode 5.1.1为iOS 7 iPhone应用程序设计一个视图。我针对的是iPhone 4s和5+视口。这是我的视图:

View with problems

该视图的目的是作为应用程序的主菜单。ImageView是应用程序的标志,每个按钮都是一个选项。我遇到的问题是尝试在视图上放置正确的约束条件,以便从iPhone 5向4s缩小高度。无论我尝试哪种组合,我总是得到“需要约束:Y位置或高度。”缺少约束,并且图像和所有按钮下方的高度不正确。

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

我错过了什么才能使它正确工作?谢谢!!

编辑:根据反馈,我制定了以下约束:

ImageView:固定到Superview的顶部/底部/前导/尾随。固定高度。距离黄色按钮底部有空间

所有按钮:彼此相等的高度。基于生成的约束,似乎所有其他按钮都看到黄色按钮的高度。

黄色按钮:顶部到ImageView,尾随/前导空间到Superview,底部到红色按钮

红色按钮:顶部到黄色按钮,尾随/前导空间到Superview,底部到绿色按钮

绿色按钮:顶部到红色按钮,尾随/前导空间到Superview,底部到棕色按钮

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

橙色按钮:顶部到棕色按钮,尾随/前导/底部到Superview

如果我这样做,在4英寸的Retina视图中一切看起来都很好。如果我将其切换到3.5英寸的视图中,一切看起来都很好,并且在模拟器中运行良好。如果我将其切换回4英寸的视图,则除了黄色按钮以外的所有按钮都会出现高度略小的错位情况:Messed up heights。不确定是什么原因导致的。如果需要,我还可以上传我的Xcode项目副本。

1
将“top”添加到ImageView,将“bottom”添加到最后一个按钮,然后选择要缩小的视图并为它们每个添加“等高”。 - Lord Zsolt
我通常避免使用“添加缺失约束”按钮,因为它会自作主张,有一半的时间会出错或者添加不必要的约束。最好的方法是删除所有约束编辑器 -> 解决自动布局问题 -> 删除所有约束并重新开始。如果/当Xcode抱怨时,决定是否希望Xcode更新框架或更新约束。阅读错误信息,它会告诉你缺少什么,然后自己添加。 - Brandon
1个回答

8
看起来你希望所有按钮的高度相等,而且图像视图也有一个已知的高度。按照以下步骤操作即可实现:
1. 将所有元素与它们旁边的视图顶部、左侧、右侧和底部距离设为0像素。对于按钮,它们在y轴上将与上下的按钮相连,而在x轴上则与父视图相连。 2. 为imageView指定一个高度。 3. 选择所有彩色按钮并使用编辑器->Pin->Heights Equally将它们的高度固定为相等的。因为自动布局知道 imageView 的起始位置(与父视图顶部相距0像素)和其高度,所以它会知道黄色按钮的顶部应该放在哪里。在底部,它知道橙色按钮应该固定在底部。唯一需要自动布局解决的问题是每个按钮的高度,这将根据“等高约束”完成。
更详细的说明请参见以下屏幕截图:
步骤1:选择顶部的 ImageView 并选择编辑器->Pin->然后逐个添加前导 (通常是大多数语言中的左侧)、尾随、顶部和底部。如下图所示,或者您可以使用底部的按钮,或者您可以使用底部的 Pin 按钮(从右侧数第6个)一次添加它们。单击小虚线以选择要添加的约束。
步骤3:将高度固定为相等,因此选择所有彩色视图并将它们的高度固定为相等。由于顶部元素(ImageView)被固定在顶部并具有已知高度,而底部则被固定在屏幕底部,其余的视图就像手风琴的褶皱一样,伸缩以填充其余可用空间。“等宽约束”确保它看起来正确。如果没有它,每个视图应该有多大存在多种解决方案,所以你可能会得到一些小的、一些大的和一些不可见的视图。
请参见以下屏幕截图:

你能更详细地描述第一步吗?我很难理解那一步。 - Allen
更新了图片和更多描述。 - Brandon
感谢提供图片和帮助。我已经更新了原始问题,并提出了后续的问题/问题。 - Allen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接