简体   繁体   中英

Text not vertically centered in UILabel

I've created a Label with the following code :

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
}

I don't really understand why but the label is not vertically centered : 标签不居中

Do I have to do anything specific so it can be centered ?

The problem is that font size is shrunk by adjustsFontSizeToFitWidth = true , but it does not adjust the lineHeight automatically. It remains to be for original font size that is 50 .

By default, the text is aligned to its baseline. you can adjust it with baselineAdjustment property.

In your case, you should set it to UIBaselineAdjustment.alignCenters .

valueLabel.baselineAdjustment = .alignCenters

Thanks to @rintaro, it works finally.

One more thing for my case, it didn't work because I was setting ByWordWrapping . I had to set lineBreakMode as ByClipping .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM