设置UIStackView iOS的优先级

时间:2019-04-09 01:22:40

标签: ios swift xcode swift4.2

我如何确定标签的优先级以使其完整显示,而另一个标签也要使其优先显示,但是如果标签太大,则应在UIStackview中设置...

enter image description here

这是我的StackView

enter image description here

1 个答案:

答案 0 :(得分:0)

以下是您想要的示例:

enter image description here

首先,UIStackView实际上会使这里的事情变得更困难,因为我们要微调每个标签之间的距离。我只是使用前后约束来将每个标签排成一行。

诀窍是为每个标签设置适当的内容抗压缩优先级内容包含优先级。首先,我们希望 0s 始终匹配其内容的大小,因此我们将其内容压缩优先级设置为1000。内容拥抱优先级可以保持默认值250。

我也将 @ 标志分成了自己的标签,因为我们一直希望它出现。将其内容压缩抵抗优先级设置为1000,并将内容包含优先级保持为250。

接下来,对于 shrink_label ,我们将内容抗压缩优先级设置为749,将内容拥抱优先级设置为1000。也就是说,我们希望 shrink_label 永远不要尝试并变得大于其文本内容大小,并且我们希望它允许根据需要压缩其内容。

最后,对于 laaabel ,我们将内容拥抱优先级设置为1000,将内容抗压缩优先级设置为750。也就是说,标签将占用尽可能多的空间,并且由于其抗压缩优先级比 shrink_label 高1, shrink_label 将在 laaabel 之前压缩。

您可以在Apple文档中阅读有关内容压缩和内容拥抱的信息:

https://developer.apple.com/library/archive/documentation/UserExperience/Conceptual/AutolayoutPG/ViewswithIntrinsicContentSize.html

我的示例应用程序的完整源代码在这里:

https://github.com/elliotfiske/StackOverflowContentHuggingExample