【问题标题】:iOS 7 Auto Layout Y Position/Height Missing ConstraintiOS 7 自动布局 Y 位置/高度缺少约束
【发布时间】:2014-08-22 13:47:20
【问题描述】:

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

此视图的目的是充当应用程序的主菜单。 ImageView 是应用程序的徽标,每个按钮都是一个选项。我遇到的麻烦是试图对视图进行正确的约束,以便从 iPhone 5 到 4s 的所有内容都会在高度方面缩小。无论我尝试哪种组合,我总是以“需要约束:Y 位置或高度”结束。在 Missing Constraints 和 Misplaced Views 下图像和所有按钮的高度不正确。

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

为了让它正常工作,我缺少什么?谢谢!!

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

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

所有按钮:彼此高度相等。根据生成的约束,似乎所有其他按钮看起来都是黄色按钮的高度。

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

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

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

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

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

如果我这样做,在 4" 的 Retina 视图中一切看起来都很好。如果我将它切换到 3.5" 视图,一切看起来都很好,并且在模拟器中运行良好。如果我将其切换回 4" 视图,除黄色之外的所有按钮都会错位,高度略小:

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

【问题讨论】:

  • 将顶部添加到 ImageView,底部到最后一个按钮,然后选择您要缩小的视图并为每个视图添加“等高”。
  • 我通常会避免添加缺少的约束按钮,它会做它认为最好的事情,大约一半的时间会出错或添加超出需要的内容。最好的办法是删除所有约束编辑器 -> 解决自动布局问题 -> 删除所有约束并重新开始。如果/当 Xcode 抱怨时,决定是否要让 Xcode 更新框架或更新约束。阅读错误,它会告诉你它认为缺少什么,然后自己添加。

标签: ios iphone autolayout


【解决方案1】:

看起来您希望所有按钮的高度相等,并且看起来图像视图也具有已知高度。这应该适合你:

1:将所有元素固定在它们旁边的视图的顶部、左侧、右侧和底部 0 px 处。对于按钮,它将是 y 轴上方和下方的按钮,以及 x 轴上的超级视图。
2:指定imageView的高度。
3:命令单击并选择所有彩色按钮并固定它们的高度。编辑器 -> 引脚 -> 高度相等。

因为自动布局知道 imageview 的开始位置(距离 superview 顶部 0 px)并且它知道高度,所以它会知道将黄色按钮的顶部放置在哪里。在底部,它知道橙色按钮应该固定在底部。 Autolayout 唯一需要确定的是每个按钮应该多高,它将基于等高约束。

编辑 - 更详细的截图说明

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

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

【讨论】:

  • 您能更详细地描述第 1 步吗?我很难遵循这一步。
  • 更新了图片和更多描述
  • 感谢您的图片和帮助。我已经用后续问题/问题更新了原始问题。
猜你喜欢
  • 1970-01-01
  • 2018-09-11
  • 2016-02-24
  • 2016-06-08
  • 2018-12-12
  • 2012-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多