我正在尝试将两个UILabel
放在一行中:一个UILable
在左侧,文本左对齐,一个UILabel
在右侧,文本右对齐。请参见上图。它们具有不同的字体大小。
我使用了以下自动布局约束:
let labelHorizontalConstrains = NSLayoutConstraint.constraints(
withVisualFormat: "H:|-20-[nameLabel]-15-[birthDeathDateLabel]-20-|",
metrics: nil,
views: views)
allConstraints += labelHorizontalConstrains
但是结果表明它们没有垂直对齐:左侧的UILabel
低于右侧的UILabel
。该如何解决?
答案 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。我不记得实际的代码,但是它可能刷新了您的记忆。如果我又加上了那种约束,我会在骨架的情节提要板上完成。