文本在UILabel中不是垂直居中的

时间:2014-10-30 09:57:41

标签: ios swift uilabel

我使用以下代码创建了一个Label:

func setupValueLabel() {
    valueLabel.numberOfLines = 1
    valueLabel.font = UIFont(name: "Avenir-Black", size: 50)
    valueLabel.adjustsFontSizeToFitWidth = true
    valueLabel.clipsToBounds = true
    valueLabel.backgroundColor = UIColor.greenColor()
    valueLabel.textColor = valuesColor
    valueLabel.textAlignment = NSTextAlignment.Center
}

我不太明白为什么但标签不是垂直居中的: Label not centered

我是否必须做任何特定的事情,以便它可以居中?

3 个答案:

答案 0 :(得分:87)

问题是字体大小缩小adjustsFontSizeToFitWidth = true,但它不会自动调整lineHeight。它仍然是原始字体大小50

默认情况下,文本与其基线对齐。您可以使用baselineAdjustment属性进行调整。

在您的情况下,您应将其设置为UIBaselineAdjustment.alignCenters

valueLabel.baselineAdjustment = .alignCenters

答案 1 :(得分:14)

感谢@rintaro,它终于有效了。

对我的情况还有一件事,因为我正在设置ByWordWrapping,所以它没有用。我必须将lineBreakMode设为ByClipping

答案 2 :(得分:0)

Swift 4.2

valueLabel.textAlignment = .center