webentwicklung-frage-antwort-db.com.de

Text in UILabel nicht vertikal zentriert

Ich habe ein Label mit folgendem Code erstellt: 

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
}

Ich verstehe nicht wirklich warum, aber das Etikett ist nicht vertikal zentriert: Label not centered

Muss ich etwas Bestimmtes tun, damit es zentriert werden kann?

41
Loadex

Das Problem ist, dass die Schriftgröße um adjustsFontSizeToFitWidth = true verkleinert wird, die lineHeight jedoch nicht automatisch angepasst wird. Die ursprüngliche Schriftgröße muss 50 sein.

Standardmäßig ist der Text an der Grundlinie ausgerichtet. Sie können es mit baselineAdjustment property anpassen.

In Ihrem Fall sollten Sie UIBaselineAdjustment.alignCenters einstellen.

valueLabel.baselineAdjustment = .alignCenters
84
rintaro

Dank @rintaro funktioniert es endlich.

Noch etwas für meinen Fall, es hat nicht funktioniert, weil ich ByWordWrapping eingestellt habe. Ich musste lineBreakMode als ByClipping einstellen. 

13
otiai10

Wenn Sie UILabel.attributedText verwenden, können Sie sizeToFit verwenden und Zentrierbedingungen hinzufügen. Seien Sie jedoch vorsichtig, dass Sie die Höhe der zugeordneten Textzeile nicht mit einer NSMutableParagraphStyle einstellen.

0
Pranav Kasetti

Swift 4.2

valueLabel.textAlignment = .center
0
ttorbik