J'affiche le texte dans UILabel en utilisant la méthode d'enveloppement. Je veux maintenant vous devez trouver le nombre de nombre de ligne est-il dans UILabel.
S'il y a un moyen de trouver la UILabel du nombre de lignes de comptage.
Merci.
J'affiche le texte dans UILabel en utilisant la méthode d'enveloppement. Je veux maintenant vous devez trouver le nombre de nombre de ligne est-il dans UILabel.
S'il y a un moyen de trouver la UILabel du nombre de lignes de comptage.
Merci.
Disons que vous avez un UILabel *myLabel
et vous voulez trouver la hauteur de l'étiquette (avec quelques ajustements, vous pouvez obtenir le nombre de lignes en divisant la hauteur avec un nombre qui dépend de la taille de la police).
UILabel *myLabel;
CGSize labelSize = [myLabel.text sizeWithFont:myLabel.font
constrainedToSize:myLabel.frame.size
lineBreakMode:UILineBreakModeWordWrap];
CGFloat labelHeight = labelSize.height;
Espérons que cela aide. Si cela ne fonctionne pas, faites le moi savoir et je vais creuser plus loin. Aussi, le code non testé, mais il a travaillé à partir de la référence.
Pour un exemple plus complet, voici le code que j'ai mis dans le viewDidLoad: méthode de vue contrôleur:
[super viewDidLoad];
UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(50,50,200,350)];
myLabel.numberOfLines = 0;
myLabel.lineBreakMode = UILineBreakModeWordWrap;
myLabel.text = @"This is some text in a UILabel which is long enough to wrap around the lines in said UILabel. This is a test, this is only a test.";
[self.view addSubview:myLabel];
CGSize labelSize = [myLabel.text sizeWithFont:myLabel.font
constrainedToSize:myLabel.frame.size
lineBreakMode:UILineBreakModeWordWrap];
CGFloat labelHeight = labelSize.height;
NSLog(@"labelHeight = %f", labelHeight);
[myLabel release];
La sortie de la NSLog va:
2010-11-15 18:25:27.817 so_labelheight[728:307] labelHeight = 126.000000
La méthode -sizeWithFont:constrainedToSize:lineBreakMode
est maintenant obsolète. Vous souhaitez utiliser la méthode -boundingRectWithSize:options:attributes:context:
maintenant.
Voici un exemples:
CGSize boundingRectSize = CGSizeMake(widthToConstrainTo, CGFLOAT_MAX);
NSDictionary *attributes = @{NSFontAttributeName : [UIFont fontWithName:fontName size:14]};
CGRect labelSize = [labelString boundingRectWithSize:boundingRectSize options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading
attributes:attributes
context:nil];
Dans l'exemple ci-dessus, je sais que la largeur je veux limiter l'étiquette, mais depuis que je ne suis pas sûr de la hauteur, je viens de max la hauteur param aide d' CGFLOAT_MAX
. Pour l' options
vous devez utiliser NSStringDrawingUsesLineFragmentOrigin
et NSStringDrawingUsesFontLeading
si vous essayez de calculer la taille d'une étiquette qui peut être n'importe quel nombre de lignes.
sizeWithFont
est obsolète dans iOS 7, vous pouvez utiliser ceci à la place:
- (int)lineCountForText:(NSString *) text
{
UIFont *font = ...
CGRect rect = [text boundingRectWithSize:CGSizeMake(200, MAXFLOAT)
options:NSStringDrawingUsesLineFragmentOrigin
attributes:@{NSFontAttributeName : font}
context:nil];
return ceil(rect.size.height / font.lineHeight);
}
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.