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

Loa*_*dex 46 uilabel ios swift

我用以下代码创建了一个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
}
Run Code Online (Sandbox Code Playgroud)

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

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

rin*_*aro 102

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

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

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

valueLabel.baselineAdjustment = .alignCenters
Run Code Online (Sandbox Code Playgroud)

  • 这不适合我.是否有可能将baselineAdjustment = .AlignCenters用于某些自定义字体? (18认同)

oti*_*i10 16

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

对我的情况还有一件事,它没有用,因为我正在设置ByWordWrapping.我不得不设置lineBreakModeByClipping.