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

时间:2016-12-28 10:05:34

标签: ios xcode autolayout constraints nslayoutconstraint

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

Right image should be the expected output

右图应为预期输出

要求,

  1. 两个标签的宽度不相同
  2. 当运行L1的前导空格并且L2的尾随空格相等时
  3. L1与...之间的距离L2,水平空间固定,10 px
  4. 无法使用UIStackView
  5. 如何从Xcode中完成?

2 个答案:

答案 0 :(得分:6)

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

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

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

编辑:此外,如果文字太大,则上述约束不足以完美地工作(您必须将 numberOfLines 设置为0和< em>包装模式到 wordWrap 以显示完整的文本,然后转到下一行)!由于UILabel推断高度推断宽度的优先级为750,每个UILabel的内容压缩阻力优先级为750默认情况下,Xcode也会混淆该做什么,理所当然!您可以做的是将属性检查器中的内容压缩属性设置为1000

enter image description here

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

答案 1 :(得分:-1)

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

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