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

时间:2017-03-08 18:31:38

标签: ios swift autolayout uistackview

我有一些标签,绝不应该互相接触。见下图(忽略黄色字母):

labels

这些共有4个标签,2个玩家名称和2个分数。播放器的名称将替换原始播放器标签文本。所以“玩家1:”可以是任何宽度的任何文本。标签位于UIStackView中的View中。每2个标签(所以玩家姓名和分数)都有自己的视图。在此示例中,1个UIStackView中有2个视图中的4个标签。这就是我想要的:

分数标签永远不会自动缩小,它们始终保持原始高度,如果内容(分数)增长,则会自动增加宽度。因此,我已将内容拥抱优先级设置为大于播放器名称标签的值。由于我不希望分数标签自动缩小,因此我将内容压缩阻力优先级设置为比玩家名称标签更大的值。

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

error

用户名应自动缩小,不应触及分数标签。我怎么能这样做?

我希望你能帮忙!

编辑:我想在玩家名称和玩家得分标签之间添加一个尾随空格。要做到这一点,我想从玩家名称中添加一个尾随空格,以及玩家得分标签。但是,当添加此约束时,它也将采用整个分数标签。我当然希望它在触及得分标签时停止。图1显示了将结尾空格添加到乐谱标签时玩家名称的大小。它占据了分数标签膨胀。 :

playersname

约束:ss

我不想使用固定约束,因为这会导致在iPad或iPhone SE上运行它时出现问题。谢谢。

1 个答案:

答案 0 :(得分:2)

要完成此操作,请将1 UIView拖到故事板上,或将xib.Drag 2 UILabels拖到此视图中并将它们并排放置。将top,bottom,leading和trailing约束添加到left / leading标签。尾随是UILabels之间的一些空间。将top,bottom和trailing约束添加到第二个标签。现在更改第一个(左/前标签为自动收缩(最小字体比例0.5)。同时更改前导标签 - 内容拥抱(水平252,垂直251)。现在单击右/尾标签并更改内容拥抱(水平 - 251,垂直251),更重要的是垂直和水平内容压缩阻力优先级为1000.现在选择保存这些标签的视图。命令C复制并粘贴到命令V外的任何地方。现在选择两个视图并转到顶部菜单在Xcode中选择Editor和 - > Embed In - > UIStackView。将stackview设置为Alignment .Center和Fill。将相等的高度和相等的宽度约束添加到堆栈视图中保存标签的2个视图中。添加顶部(或底部或对栈视图进行超前视图的前导和尾随约束。调整标签上的前导和尾部以添加一些填充。要在两个视图之间添加填充,在stackview中保持标签,在它们之间添加一个视图并设置宽度约束( F你需要的超级或超级百分比)到所需的填充。