iOS 自动布局 >> 视图没有改变它的大小

Posted

技术标签:

【中文标题】iOS 自动布局 >> 视图没有改变它的大小【英文标题】:iOS Auto Layout >> View is not Changing its Size 【发布时间】:2014-03-12 10:02:12 【问题描述】:

我的屏幕设计应该是这样的(其他的东西会在以后添加,但我似乎无法解决基础......):

我添加了约束来确定以下内容:

两个标签在与屏幕边缘的间距上都是约束。 中间视图水平和垂直约束到背景视图中心的中间。 我添加了 4 个约束来表示中间视图和标签之间的最小和最大垂直间距(当前间距为最大,标准间距为最小值)。 我还在中间视图中添加了 2 个约束来定义屏幕左右边缘的间距。

我以为应该够了,但实际上,在 Retina 3.5 和 4 之间切换时,底部标签消失了,中间视图被切到了中间:

我已经尝试降低中间视图内容拥抱和内容压缩优先级,但仍然不行。

以下是我收到的警告:

知道如何解决这个问题吗?

或者,如何以不同的方式处理它(最好仍然使用自动布局)?

【问题讨论】:

我能够通过在中间视图和标签之间设置恒定间距来解决不明确的布局——因为中间视图的大小减小了——但这不是我想要实现的。我不介意间距会从当前值减小 - 因此我假设关系间距(大于和小于)应该提供足够的数据。但似乎中间视图“忽略”了这些约束。此外,它忽略了中间视图中心约束 (H & V)。 【参考方案1】:

添加等宽和等高约束,它会起作用

【讨论】:

您为哪些对象添加了这些约束? 选择所有视图、标签并添加此约束。我的工作正常。 我的不是...当我选择所有这些(3 个对象)并标记 2 个约束定义(如您所建议的那样)时,添加 X 约束按钮标记有 4 个要添加的约束,而在您的示例中,它声明要添加 6 个约束。你能说出我们为什么会有所不同吗? 然后尝试将底部间距添加到黄色视图的最近邻约束。要在与最近邻的间距中的底部红色虚线中添加该点击。 我已经有一个来自黄色视图的间距约束 - 实际上是两个标签 - 我将最小间距指定为“标准”(即 8 像素)。【参考方案2】:

为顶部标签添加TopSpaceToContainer 约束。然后在中间为黄色视图添加widthheight 约束。移除赋予顶部标签和底部标签的多个vertical spacing 约束。

【讨论】:

我已经有一个顶部空间到容器的顶部标签。将高度约束添加到中间视图应该如何解决问题?因为整个想法是让这个 View Height '灵活',所以当它在 3.5 或 Landscape 中呈现时它会缩小。另外,我试过了,还是不行……

以上是关于iOS 自动布局 >> 视图没有改变它的大小的主要内容,如果未能解决你的问题,请参考以下文章

自动布局 - 定义应该改变哪个约束首先调整它的大小

以编程方式在 iOS 中自动布局

自动布局 iOS7 -> 带状态栏的 iOS6

iOS >> 拖动视图正在跳回原始位置 >> 自动布局结合 UIPanGestureRecognizer 问题

IOS6 使用自动布局的约束

尝试理解 iOS 8 中的 UIScrollView 自动布局