如何在一行中垂直对齐两个UILabel?

时间:2019-01-27 05:18:45

标签: ios swift autolayout

enter image description here

我正在尝试将两个UILabel放在一行中:一个UILable在左侧,文本左对齐,一个UILabel在右侧,文本右对齐。请参见上图。它们具有不同的字体大小。

我使用了以下自动布局约束:

 let labelHorizontalConstrains = NSLayoutConstraint.constraints(
        withVisualFormat: "H:|-20-[nameLabel]-15-[birthDeathDateLabel]-20-|",
        metrics: nil,
        views: views)
    allConstraints += labelHorizontalConstrains

但是结果表明它们没有垂直对齐:左侧的UILabel低于右侧的UILabel。该如何解决?

2 个答案:

答案 0 :(得分:3)

您需要添加centerYAnchor约束。

birthDeathDateLabel.centerYAnchor.constraint(equalTo: nameLabel.centerYAnchor).isActive = true

但是,如果要使其与文本的底部对齐,则应使用UIStackView

let stackView = UIStackView(arrangedSubviews: [nameLabel, birthDeathDateLabel])
stackView.alignment = .firstBaseline
stackView.axis = .horizontal
// Add other stackview properties and constraints

答案 1 :(得分:0)

您需要在正确的标签上添加前导约束和高度约束。在左侧标签上添加尾随和高度约束。然后指定等宽约束。还在右标签上添加带有尾部约束的距左标签的距离,并为左标签添加前导约束,您希望距右标签的距离有多远。在情节提要上更容易。您也可以平等地使用fit。我不记得实际的代码,但是它可能刷新了您的记忆。如果我又加上了那种约束,我会在骨架的情节提要板上完成。