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

问题描述 投票:42回答:3

我用以下代码创建了一个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
}

我真的不明白为什么但标签不是垂直居中的:

我是否必须做任何特定的事情才能使它居中?

ios swift uilabel
3个回答
89
投票

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

默认情况下,文本与其基线对齐。你可以用baselineAdjustment属性调整它。

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

valueLabel.baselineAdjustment = .alignCenters

14
投票

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

对我的情况还有一件事,它没有用,因为我正在设置ByWordWrapping。我不得不把lineBreakMode设为ByClipping


0
投票

Swift 4.2

valueLabel.textAlignment = .center
© www.soinside.com 2019 - 2024. All rights reserved.