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

Saz*_*han 2 xcode constraints ios autolayout nslayoutconstraint

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

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

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

要求,

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

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

Rik*_*ikh 6

你可以做的是将UILabel内部放入a UIView然后:

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

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

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

在此输入图像描述

要么

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