我如何安排两个 UILabel,以便一个自动调整大小,另一个占据剩余的 space?
How can I arrange two UILabels so that one autosizes and the other takes up the remaining space?
我的 TableViewCell 中有两个水平排列的标签。右边的 space 应该用完它需要的,而左边的应该用完剩余的 space。在两个标签的长度大于单元格宽度的情况下,应该裁剪左边的标签,使右边有足够的 space 来完整显示。如果有差异,标签将与其各自的边对齐。
Size Inspector下的"Arrange > Fill Container Vertically"选项和我需要的左标签类似,但我希望它只占用space右标签不需要的。
如果我向左侧标签的尾随 space 添加约束(请参阅下面的第三个约束),结果几乎就是我需要的结果,而不是右侧标签被赋予所需的 space,左边的标签需要 space(见最终图像)。
调整内容拥抱优先级和抗压优先级。右边的标签应该比左边有更高的水平内容拥抱优先级和内容压缩阻力优先级。这与以下约束(以可视格式语言编写)相结合应该会给你想要的效果:
|-[leftLabel]-[rightLabel]-|
如果右侧标签中的文本太长,这可能会导致左侧标签宽度变为 0。在左侧标签上设置一个 >= 宽度的宽度约束来解决此问题。
我认为这比您想象的要容易...
约束"LeftLabel"前导,约束"RightLabel"尾随,将两者之间的Horizontal Spacing约束为>= 8
,然后给"LeftLabel"一个Content Compression Resistance Priority为Low (250)
.
这告诉 auto-layout 根据文本内容扩展每个标签,但是如果它们之间的距离最终是 less-than 8,让 "RightLabel" 扩展到它的文本,但是仅将 "LeftLabel" 扩展到距 "RightLabel".
8 点
选择了左标签:
结果:
我的 TableViewCell 中有两个水平排列的标签。右边的 space 应该用完它需要的,而左边的应该用完剩余的 space。在两个标签的长度大于单元格宽度的情况下,应该裁剪左边的标签,使右边有足够的 space 来完整显示。如果有差异,标签将与其各自的边对齐。
Size Inspector下的"Arrange > Fill Container Vertically"选项和我需要的左标签类似,但我希望它只占用space右标签不需要的。
如果我向左侧标签的尾随 space 添加约束(请参阅下面的第三个约束),结果几乎就是我需要的结果,而不是右侧标签被赋予所需的 space,左边的标签需要 space(见最终图像)。
调整内容拥抱优先级和抗压优先级。右边的标签应该比左边有更高的水平内容拥抱优先级和内容压缩阻力优先级。这与以下约束(以可视格式语言编写)相结合应该会给你想要的效果:
|-[leftLabel]-[rightLabel]-|
如果右侧标签中的文本太长,这可能会导致左侧标签宽度变为 0。在左侧标签上设置一个 >= 宽度的宽度约束来解决此问题。
我认为这比您想象的要容易...
约束"LeftLabel"前导,约束"RightLabel"尾随,将两者之间的Horizontal Spacing约束为>= 8
,然后给"LeftLabel"一个Content Compression Resistance Priority为Low (250)
.
这告诉 auto-layout 根据文本内容扩展每个标签,但是如果它们之间的距离最终是 less-than 8,让 "RightLabel" 扩展到它的文本,但是仅将 "LeftLabel" 扩展到距 "RightLabel".
8 点选择了左标签:
结果: