Mesurer la largeur en pixels d'une chaîne
-
07-07-2019 - |
Question
Je dois mesurer la largeur en pixels d'une chaîne dans Cocoa Touch. Quelqu'un peut-il m'indiquer un lien expliquant comment procéder?
La solution
Sur iPhone OS, il est légèrement différent, regardez plutôt le Référence des ajouts UIKit NSString . L’idée est la même que dans Cocoa pour Mac OS X, mais il existe plus de méthodes.
Pour les lignes de texte simples, utilisez:
- (CGSize)sizeWithFont:(UIFont *)font
forWidth:(CGFloat)width
lineBreakMode:(UILineBreakMode)lineBreakMode
Et pour les textes multilignes, utilisez:
- (CGSize)sizeWithFont:(UIFont *)font
constrainedToSize:(CGSize)size
lineBreakMode:(UILineBreakMode)lineBreakMode
L'utilisation d'un UILineBreakMode
en tant qu'argument pour des lignes de texte simples peut être source de confusion, mais c'est parce que le saut de ligne est également utilisé pour définir la manière de tronquer le texte.
Autres conseils
Jetez un coup d'œil au Référence des ajouts au kit d'application NSString , en particulier boundingRectWithSize: options: attributs:
. La valeur renvoyée par cette routine doit vous donner la largeur de votre NSString
.
La solution ci-dessus est maintenant obsolète. Cochez cette case pour iOS 7 +
sizeWithFont:constrainedToSize:lineBreakMode
est obsolète maintenant. Utilisez l'extrait de code ci-dessous,
UIFont *font=[UIFont fontWithName:@"Arial" size:16.f];
NSString *name = @"APPLE";
CGSize size = [name sizeWithAttributes:@{NSFontAttributeName:font}];