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:
Muss ich etwas Bestimmtes tun, damit es zentriert werden kann?
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
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.
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.
Swift 4.2
valueLabel.textAlignment = .center