我如何确保UILabel仅占用所需的空间,而无需额外的填充?

问题描述 投票:0回答:2

在处理垂直和水平堆栈视图中的标签时,我遇到了一个特殊的问题。

根据标签内容,水平堆叠视图应具有动态高度。我已经尝试过其他解决方案,例如将标签(以及在水平堆栈视图中的图像)嵌入单独的UIView中,并将标签固定到边缘。

问题是,当标签设置为0时-标签会超出其所需范围,并在标签上方和下方添加填充。

我确实验证了这不是从堆栈视图从imageView下方开始的约束问题,因为当将堆栈视图与“ top”对齐时,警告标签正确地向上浮动,但是标签仍然居中。

没有代码的情节提要中的所有操作都已完成。

看看图像,也许有人可以帮我解决,并认识到我可以解决这个问题。

所需效果

Desired Effect

运行应用程序时会发生什么

What occurs upon running the application

通过对齐顶部,确认堆栈视图已正确固定到图像视图Verifying that the stack view is correctly pinned to the image view by aligning top

涉及的约束

Constraints involved

底部的层次结构中的第二个stackview只是为了在设计阶段填充空白空间。我认为这不会引起问题。

ios swift uilabel uistackview
2个回答
0
投票

您可以通过致电yourLabel.sizeToFit()来实现

上面将根据您的文本所占用的空间量来动态调整标签的高度。


0
投票

我想您实际上在底部的第二个stackView也是您问题的一部分。如果将垂直堆栈视图固定到图像的底部(TOP约束),但又将其固定到屏幕底部(底部约束),则垂直堆栈视图将尝试拉紧其内容。这就是标签具有额外空间的原因。

您可以做的:摆脱那个底部约束(不要给出垂直的stackView底部约束),或者最好将警告标签优先的垂直内容设置为更大的值。enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.