当两个UILabel并排显示时,如何设置约束,让 leftLB 和 rightLB 正常显示就很重要了。

方案1: 左右两个Label的宽度相同,则约束设置如下:

1
2
3
4
5
6
7
8
9
10
11
12
// 添加标题约束,左边的label
leftLb.snp.makeConstraints { make in
make.leading.equalTo(16)
make.centerY.equalToSuperview()
make.trailing.equalTo(rightLb.snp.leading).offset(8)
make.width.equalTo(rightLb)
}
// 添加内容约束,右边的label
rightLb.snp.makeConstraints { make in
make.trailing.equalTo(-16)
make.centerY.equalToSuperview()
}

方案2: 左右两个Label的宽度不相等,此时需要根据设置 setContentHuggingPrioritysetContentCompressionResistancePriority 来控制哪边的label拉伸,哪边的label收缩。

  • setContentHuggingPriority 表示当前的Label的内容不想被拉伸
  • setContentCompressionResistancePriority 表示当前的Label的内容不想被收缩

默认情况下: HuggingPriority == 250, CompressionResistancePriority == 750

需要考虑2种情况,左右2边数据均不足的时候,谁拉伸?左右2边数据均充足的时候,谁收缩?

首先解决第一个问题,左右2边数据均不足的时候,谁拉伸,这个由 HuggingPriority 控制。

  • 如果想让左边的内容拉伸,就设置左边的数值<250(或让右边的>250);
  • 如果想让右边的内容拉伸,就设置右边的数值<250 (或让左边的>250)。

左右两个Label对比,数值越大,越不想被拉伸,结果也不会被拉伸;数值越小,越容易被拉伸。

然后解决第二个问题,左右2边数据都充足的时候,谁收缩,这个由 ContentCompressionResistancePriority 控制。

  • 如果想让左边的内容收缩,就设置左边的数值<750(或让右边的>750);
  • 如果想让右边的内容收缩,就设置右边的数值<750(或让左边的>750)