Veuillez consulter mon gist où j'ai créé une catégorie pour UILabel
pour quelque chose de très similaire, ma catégorie permet à un UILabel
d'étirer sa hauteur pour afficher tout le contenu : https://gist.github.com/1005520
Ou consultez cet article : https://stackoverflow.com/a/7242981/662605
Cela étirerait la hauteur, mais vous pouvez facilement le modifier pour fonctionner dans l'autre sens et étirer la largeur avec quelque chose comme ceci, ce qui, je crois, est ce que vous voulez faire :
@implementation UILabel (dynamicSizeMeWidth)
- (void)resizeToStretch{
float width = [self expectedWidth];
CGRect newFrame = [self frame];
newFrame.size.width = width;
[self setFrame:newFrame];
}
- (float)expectedWidth{
[self setNumberOfLines:1];
CGSize maximumLabelSize = CGSizeMake(CGRectGetWidth(self.bounds), CGFLOAT_MAX);
CGSize expectedLabelSize = [[self text] sizeWithFont:[self font]
constrainedToSize:maximumLabelSize
lineBreakMode:[self lineBreakMode]];
return expectedLabelSize.width;
}
@end
Vous pourriez utiliser plus simplement la méthode sizeToFit
disponible dans la classe UIView
, mais définissez le nombre de lignes sur 1 pour être prudent.
Mise à jour iOS 6
Si vous utilisez AutoLayout, vous avez une solution intégrée. En définissant le nombre de lignes sur 0, le framework redimensionnera automatiquement votre étiquette (ajoutant plus de hauteur) pour s'adapter à votre texte.
Mise à jour iOS 8
sizeWithFont:
est obsolète, utilisez plutôt sizeWithAttributes:
:
- (float)expectedWidth{
[self setNumberOfLines:1];
CGSize expectedLabelSize = [[self text] sizeWithAttributes:@{NSFontAttributeName:self.font}];
return expectedLabelSize.width;
}
0 votes
Quelqu'un peut-il s'il vous plaît m'aider en fournissant des codes swift?