带有3个标签的iOS水平UIStackView - 第一个标签将其他标签推到视线之外

时间:2016-11-23 06:19:01

标签: ios swift autolayout uilabel uistackview

我不确定我是否正确理解UIStackView。我在UIStackView中有一个UITableViewCell。它包含3个UILabel,并设置为对齐并分发Fill。

当我的第一个标签文字不长时,它看起来都很好。第二个和第三个标签占用了他们需要的空间,并且它们与右侧对齐。第一个标签占据了剩下的空间。

但是,当第一个标签包含大量文本时,它会将其他两个标签推出可见区域。我该怎么做才能确保第二个和第三个标签始终可见,并占用显示其内容所需的空间。第一个标签应始终占用剩余的可用空间,然后使用“...”

截断其文本

这是我在故事板中的配置:

UIStackView configuration

这就是TableView中结果的样子:

UIStackView result in UITableView

3 个答案:

答案 0 :(得分:12)

我尝试了这里提到的其他解决方案,发现它们很难或不实用。我不想以编程方式设置和更改布局约束,所以我继续玩这些值。最后,我发现了一个非常简单的解决方案,它正是我想要的。

我所要做的就是设置"内容压缩阻力优先"在我的第一个标签上低一些。第二和第三个标签有750个,而且他们有251个和252个内容拥抱优先级"而第一个标签的值为749和250.这完全给出了我想要的结果。

无论如何,谢谢你们。有时我觉得我在问这里之后能更快地找到问题的解决方案。我希望我的回答将来会帮助其他人。

此: enter image description here

给我这个结果(注意我设置" isHidden"对于第三行的第二和第三个标签为true): enter image description here

答案 1 :(得分:1)

您可以考虑将这3个视图直接放在contentView上,而不是使用UIStackView,并将第一个标签尾部设置为第二个

答案 2 :(得分:0)

为什么甚至使用stackview?只需要2个标签和一个图像视图,相应地设置所需的尺寸和约束。