当其他 UILabel 增长时自动收缩 UILabel

Auto shrink UILabel when other UILabel grows

我有几个标签,它们不应该相互接触。见下图(忽略黄色字母):

一共是4个标签,2个选手名字,2个分数。球员的名字将取代原来的球员标签文本。所以 "player 1:" 可以是任意宽度的任意文本。标签在 View 中,在 UIStackView 中。每 2 个标签(即球员姓名和得分)都有自己的视图。在这个例子中,有 4 个标签,在 2 个视图中,在 1 个 UIStackView 中。这就是我想要的:

乐谱标签永远不会自动缩小,它们始终保持原始高度,并且如果内容(乐谱)增长,它们会自动增加宽度。因此,我将内容拥抱优先级设置为比播放器名称标签更大的值。由于不想让score标签自动收缩,所以我把content compression resistance priority设置的比players name label的值大

我将玩家姓名标签文本设置为自动收缩值比例为 0.5。然而,当出现一个大的用户名时,它会像这样出现在分数标签上(我把原来的蓝色“0”变成了黄色):

用户名应该自动缩小,并且永远不要触及分数标签。我该怎么做?

希望对您有所帮助!

编辑:我想在球员姓名和球员得分标签之间添加尾随 space。为此,我想从球员姓名到球员得分标签添加尾随 space。然而,当添加这个约束时,它也会占用整个分数标签。我当然希望它在触及乐谱标签时停止。图 1 显示了将尾随 space 添加到分数标签时球员姓名的大小。它占用了分数标签膨胀。 :

和约束:

我不想使用固定约束,因为这会在 iPad 或 iPhone SE 上引起问题 运行。谢谢。

要完成此操作,请将 1 个 UIView 拖到故事板上或 xib.Drag 2 个 UILabel 拖到此视图中并将它们并排放置。向 left/leading 标签添加顶部、底部、前导和尾随约束。尾随是将在 UILabel 之间提供一些 space 的内容。将顶部、底部和尾部约束添加到第二个标签。现在将第一个(left/leading 标签更改为 Autoshrink(最小字体比例 0.5)。同时更改前导标签 - Content Hugging(Horizo​​ntal-252,Vertical 251)。现在单击 right/trailing 标签并更改 Content拥抱(Horizo​​ntal-251,Vertical 251)更重要的是内容压缩阻力优先级在垂直和水平上都为 1000。现在 select 持有这些标签的视图。命令 C 复制并粘贴到命令 V 之外的任何地方。现在 select 两个视图并在 Xcode 和 select 编辑器和 -> 嵌入 -> UIStackView 中进入顶部菜单。将堆栈视图设置为对齐。居中和填充。添加相等的高度和相等的宽度对在堆栈视图中保存标签的 2 个视图的约束。将顶部(或底部或两者),前导,尾随约束添加到堆栈视图到它的超级视图。调整标签上的前导和尾随以添加一些填充。在两个视图之间添加填充将标签保存在堆栈视图中,在它们之间添加一个视图并设置宽度约束(固定或百分比super 无论你想要什么)到所需的填充。