这是一个遵循你想要的例子:
首先,UIStackView实际上会让事情变得更难,因为我们想要微调每个标签之间的距离。我只是使用前导和尾随约束来布局一行中的每个标签。
诀窍是为每个标签设置适当的内容压缩阻力优先级和内容拥抱优先级。首先,我们希望0总是匹配其内容的大小,因此我们将其内容压缩阻力优先级设置为1000.内容拥抱优先级可以保持默认值250。
我也将@符号拆分为自己的标签,因为我们总是希望它出现。将其内容压缩阻力优先级设置为1000,并将内容拥抱优先级保持为250。
接下来,对于shrink_label,我们将内容压缩阻力优先级设置为749,将内容拥抱优先级设置为1000.也就是说,我们希望shrink_label永远不会尝试增长大于其文本内容大小,并且我们希望它允许其内容如果我们需要可以压缩。
最后,对于laaabel,我们将内容拥抱优先级设置为1000,将内容压缩阻抗优先级设置为750.也就是说,标签将占用尽可能多的空间,并且由于其压缩阻力优先级比shrink_label高1, shrink_label将在laaabel之前压缩。
您可以在此处阅读Apple文档中的内容压缩和内容拥抱:
我的示例应用程序的完整源代码可在此处获得:
https://github.com/elliotfiske/StackOverflowContentHuggingExample