【问题标题】:How to vertically align two UILabels within one line?如何在一行内垂直对齐两个 UILabel?
【发布时间】:2019-01-29 03:50:59
【问题描述】:

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

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

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

但结果显示它们没有垂直对齐:左侧UILabel低于右侧UILabel。如何解决这个问题?

【问题讨论】:

    标签: ios swift autolayout


    【解决方案1】:

    您需要添加一个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
    

    【讨论】:

      【解决方案2】:

      您需要在右侧标签中添加前导约束和高度约束。向左标签添加尾随和高度约束。然后指定等宽约束。同样在右侧标签上添加带有尾随约束的左侧标签的距离,并为左侧标签添加前导约束,您希望它与右侧标签的距离......在情节提要上更容易。你也可以同样使用 fit 。我不记得实际的代码,但它可能刷新了你的记忆。如果我也添加了那种约束,我会在骨架故事板上做。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-22
        • 1970-01-01
        • 2013-10-15
        • 2019-04-27
        相关资源
        最近更新 更多