Je reçois la largeur d'un UILabel [après que le texte ait été défini] avec:
myUILabel.frame.width
mais c'est toujours la même largeur, peu importe s'il contient le String: "Hello."
ou le String: "Hello everyone on this planet."
Mais UILabel doit avoir une plus grande largeur avec la deuxième chaîne.
Essayez myUILabel.intrinsicContentSize()
. Assurez-vous de définir votre police en premier, bien sûr.
Vous devriez utiliser [label sizeToFit]
sizeToFit
sur l’étiquette étendra l’étiquette pour accueillir le texte.
L'autre solution consiste à calculer la largeur de la chaîne et à recadrer l'étiquette en fonction de la largeur de la chaîne.
Pour la deuxième solution, vous pouvez calculer la taille de la chaîne comme suit:
CGSize strSize = CGSizeZero;
CGSize minSize = CGSizeZero;
if([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0)
{
NSAttributedString *attributedText = [[[NSAttributedString alloc] initWithString:text attributes:@{NSFontAttributeName: label.font}] autorelease];
CGRect rect = [attributedText boundingRectWithSize:constraintSize
options:NSStringDrawingUsesLineFragmentOrigin
context:nil];
strSize = rect.size;
}
else
{
strSize = [text sizeWithFont:label.font constrainedToSize:constraintSize];
}