iOS – 将两个标签放在超级视图的中心

我有两个标签,L1和L2的变量和非同一长度。 我想在Xcode中使用约束放置这两个标签。 如果可能的话,我不想以编程方式操纵约束。 指导将不胜感激。

正确的图像应该是预期的输出

正确的图像应该是预期的输出

要求,

  1. 两个标签的宽度不相同
  2. 当运行L1的前导空间和L2的尾随空间时将是相等的
  3. L1和L2之间的距离,水平空间是固定的,10 px
  4. UIStackView无法使用

我怎么能从Xcode做到这一点?

您可以做的是将UILabel放在UIView ,然后:

  • superView的前导,顶部和底部添加到HEL UILabel
  • superView的顶部,顶部和底部添加到HEAVENLY UILabel
  • 在两个UILabel之间添加10个点的水平间距

现在将UIView水平和垂直居中放置在屏幕中间。 将水平居中约束优先级设置为250.使用>= 5约束将UIView的前导和尾随空格添加到其superView

编辑:此外,如果文本太大,那么上述约束不足以完美地工作(您必须将numberOfLines设置为0并将模式换行wordWrap以显示完整文本并转到下一行,当然)! 由于UILabel推断高度推断宽度优先级为750,并且每个UILabel的内容压缩阻抗优先级也默认为750,因此Xcode将会混淆该做什么,这是正确的! 您可以做的是将属性检查 中的内容压缩属性设置为1000

在此处输入图像描述

要么

如果你不想修改抗压性 (我曾经发现它们很可怕),你还可以做的是在每个UILabel的宽度和高度上添加一个>=约束。 给出这个约束也可以显示完整的文本,无论它有多大,因为明确定义高度和宽度给它们优先级为1000!

你的L1和L2的宽度是固定值还是不确定值?

如果宽度是固定的,你可以使用砌体来实现效果。