Xcode 期望堆栈视图中的 UILabel 具有比它更大的高度

Posted

技术标签:

【中文标题】Xcode 期望堆栈视图中的 UILabel 具有比它更大的高度【英文标题】:Xcode expects UILabel in stack view to have greater height than it is 【发布时间】:2016-01-27 18:48:35 【问题描述】:

我正在尝试将两组相同大小的 UILabel 直接放在 UIView 上的 UITextField 上方。我认为这将是堆栈视图的绝佳使用。

Here is a screenshot of my elements

但是,出于某种原因,Xcode 似乎期望 UILabel 会比它应该的高得多,并导致有关布局的警告。

Here are the warnings

选中 UILabel 后,您可以看到轮廓。您也可以在其他UILabel上看到相同的大小大纲,并且在选择堆栈视图元素时,它也会显示更大的区域。单击 UITextField 时,将显示轮廓从 UILabel 轮廓结束的位置开始。使用“解决自动布局问题”到“更新框架”将使堆栈视图向外扩展以匹配轮廓的大小,但它会立即跳回原始大小。

我是在滥用还是错误配置了堆栈视图?或者还有其他问题吗?

我正在使用 Xcode 7.3 build 7D111g。

【问题讨论】:

您是否为所有标签提供了相同的宽度/高度约束? @Mr.T 他们都没有约束,堆栈视图设置为填充。当我对标签设置约束时,没有任何变化。 选择所有标签并给予相等的宽度和高度约束,看看会发生什么 @Mr.T 等式约束似乎没有任何影响 由于堆栈视图设置为填充,其他标签尝试填充它。使堆栈视图更小 【参考方案1】:

这是因为您的label 正在填充stackview

不要对stackview 进行高度限制。只需将以下两个约束添加到顶部stackview

    顶部空间 在容器中水平居中

Stackview 将从其内容中获取高度。

查看更新后的 GIF

所有警告都已完成。

希望这能有所帮助。

【讨论】:

如果我向堆栈视图添加顶部约束,它会开始发出警告。 imgur.com/a/rIKNG 根据您的情况检查更新的答案。顶部堆栈视图只需要两个约束。见 GIF 所以总的来说这个storyboard对父stackview有两个限制

以上是关于Xcode 期望堆栈视图中的 UILabel 具有比它更大的高度的主要内容,如果未能解决你的问题,请参考以下文章

如何将 UILabel 文本顶部和底部空间居中

具有动态标签宽度的堆栈视图分布

Xcode - UILabel 没有改变 viewDidAppear 的值

调整堆栈视图的大小

如何解决 Interface Builder Xcode 中的 stackview 错误问题?

如何确保 UILabel 只占用它需要的空间,而不需要额外的填充?