197 votes

Modifier dynamiquement la taille de la police - UILabel

J’ai actuellement un UILabel :

Tout au long de la vie de mon application iOS, `` obtient un tas de différentes valeurs. Certains avec plusieurs phrases. D’autres avec seulement 5 ou 6 mots.

Comment puis-je configurer le UILabel afin que la taille de la police change de sorte que le texte s’inscrit toujours dans les limites que j’ai défini ?

386voto

Martin Babacaev Points 2492
factLabel.numberOfLines = 1;
factLabel.minimumFontSize = 8.;
factLabel.adjustsFontSizeToFitWidth = YES;

Le code ci-dessus ajuster votre texte police taille vers le bas (par exemple) 8 essayer de s'adapter à votre texte à l'intérieur de l'étiquette. numberOfLines = 1 est obligatoire.

Pour numberOfLines > 1 il existe une méthode pour déterminer la taille du texte final par le biais de NSString de UIKit outre les méthodes, par exemple:

CGSize lLabelSize = [yourText sizeWithFont: factLabel.font forWidth:factLabel.frame.size.width lineBreakMode:factLabel.lineBreakMode];

Après, vous pouvez simplement redimensionner votre étiquette en utilisant résultant lLabelSize, par exemple (en supposant que vous allez changer seulement l'étiquette de hauteur):

factLabel.frame = CGRectMake(factLabel.frame.origin.x, factLabel.frame.origin.y, factLabel.frame.size.width, lLabelSize.height);

Modifier

Départ avec iOS6, minimumFontSize a été supprimée. La ligne

factLabel.minimumFontSize = 8.;

peut être changé:

factLabel.minimumScaleFactor = 8./factLabel.font.pointSize;

73voto

Amit Singh Points 1003

a été désapprouvée avec iOS6. Vous pouvez utiliser .

Cela prendra soin de votre taille de la police selon la largeur de l’étiquette et le texte.

S’il vous plaît faites le moi savoir si aucune porte.

24voto

Basé sur @Eyal réponse de Ben Dov, que vous pouvez créer une catégorie pour la rendre souple à utiliser dans une autre apps de la vôtre.

Obs. : J’ai mis à jour son code pour le rendre compatible avec iOS 7

-Fichier d’en-tête

-Fichier de mise en œuvre

-Utilisation

A bientôt

4voto

Eyal Ben Dov Points 41

Son un peu pas sophistiqué mais cela devrait fonctionner, par exemple disons que vouloir plafonner votre uilabel à 120 x 120, avec la taille de police maximale de 28 :

2voto

codercat Points 5586

Envoyez simplement le message sizeToFit à la UITextView. Il ajuste sa propre hauteur pour contenir tout son texte. Il ne changera pas sa propre largeur ou origine.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X