【发布时间】:2017-03-08 18:31:37
【问题描述】:
我有几个标签,它们不应该相互接触。见下图(忽略黄色字母):
总共有 4 个标签,2 个球员姓名和 2 个分数。播放器的名称将替换原始播放器标签文本。所以“玩家 1:”可以是任何宽度的任何文本。标签在视图中,在 UIStackView 中。每个 2 个标签(因此玩家的姓名和得分)都有自己的视图。在这个例子中,有 4 个标签,在 2 个 Views 中,在 1 个 UIStackView 中。这就是我想要的:
分数标签永远不会自动缩小,它们始终保持原始高度,并且如果内容(分数)增长,它们会自动增加宽度。因此,我将内容拥抱优先级设置为大于玩家名称标签的值。由于我不希望分数标签自动缩小,因此我将内容抗压缩优先级设置为大于玩家名称标签的值。
我将玩家名称标签文本设置为自动缩小值比例为 0.5。然而,当一个大的用户名出现时,它会像这样出现在分数标签上(我把原来的蓝色“0”变成了黄色):
用户名应该自动缩小,并且不应该触及分数标签。我该怎么做?
希望你能帮上忙!
编辑:我想在球员姓名和球员得分标签之间添加一个尾随空格。为此,我想从球员姓名到球员得分标签添加一个尾随空格。然而,当添加这个约束时,它也会占用整个分数标签。我当然希望它在触及乐谱标签时停止。图 1 显示了将尾随空格添加到分数标签时球员姓名的大小。它占用了分数标签膨胀。 :
我不想使用固定约束,因为这会导致在 iPad 或 iPhone SE 上运行它时出现问题。谢谢。
【问题讨论】:
-
UIStackView不能使用内容压缩或拥抱属性。它还自己管理视图堆栈(而不真正关心自动布局)。我认为你最好直接将标签添加到视图中并在没有自动布局的情况下处理它。 -
是的,它是自动布局,堆叠在 UIStackview 中。我不知道如何做这件事。自动布局不会根据其他 UILabel 自动调整标签大小
-
我认为 UIStackView 不支持其中的标签内容拥抱。在更改整个代码之前,我将等待其他答案
-
玩家名字过长怎么办?我认为它最后应该有“...”,对吗?还有,玩家姓名标签和分数标签之间的空间,应该如何表现?
-
我可以回答最好的方法,但首先只是一个问题。名称是否应该占用最大空间然后缩小,或者如果分数为 0,您可以将名称一直延伸到单个数字 0?
标签: ios swift autolayout uistackview