Texte qui ne sont pas centrés verticalement dans UILabel
J'ai créé une Étiquette avec le code suivant :
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
}
Je ne comprends pas vraiment pourquoi, mais l'étiquette n'est pas centrée verticalement :
Dois-je faire quelque chose de spécifique, de sorte qu'il peut être centré ?
- Cela peut être un peu bête, mais pouvez-vous vérifier si vous avez un supplément de caractère de saut de ligne
\n
dans votre texte de l'étiquette? Le code a l'air bien par la manière. - C'est ce que j'ai vérifié immédiatement, mais je n'en ai pas !
- Pourriez-vous essayer de réduire la taille de la police? Il ressemble,
lineHeight
est de 50, mais la taille de la police, est réduit paradjustsFontSizeToFitWidth=true
. - Il a fait le tour ! Mais je sens que si je n'ai pas entré la bonne valeur et la taille de la police de régler le problème serait de ré-apparaître
- Il apparaît chaque fois la taille de la police est trop grande pour mon image. Qui a fait le tour mais il ne fonctionne pas pour moi, depuis le point de vue peut avoir plusieurs tailles
- Je comprends. Mais pour le moment, je n'ai pas de solution.
- Est-ce un bug un peu du cadre ou ce comportement est considéré comme normal ?
- Je l'ai trouvé.
valueLabel.baselineAdjustment = .AlignCenters
a fait le tour. - Merci, pouvez-vous l'écrire comme une réponse afin que je puisse l'accepter ?
Vous devez vous connecter pour publier un commentaire.
Le problème est que la taille de la police est rétréci par
adjustsFontSizeToFitWidth = true
, mais elle ne règle pas lelineHeight
automatiquement. Il reste à pour origine taille de police50
.Par défaut, le texte est aligné à sa base. vous pouvez l'ajuster avec
baselineAdjustment
propriété.Dans votre cas, vous devez le régler à
UIBaselineAdjustment.alignCenters
.Grâce à @rintaro, enfin il fonctionne.
Une chose de plus pour mon cas, ça ne marchait pas parce que j'ai été la mise
ByWordWrapping
. J'ai dû mettrelineBreakMode
commeByClipping
.ByClipping
résoudre le problème et aucun autre mode?