La taille UILabel, Correspondre

J'ai un problème associé à la méthode
UILabel

' s
sizeToFit

:


UILabel *questionLabel = [[UILabel alloc]initWithFrame:CGRectMake/0,0,320,320/];
questionLabel.lineBreakMode = UILineBreakModeWordWrap;
questionLabel.backgroundColor=[UIColor clearColor];
questionLabel.textAlignment=UITextAlignmentLeft;
questionLabel.textColor=[UIColor blackColor];
questionLabel.tag=1;
questionLabel.font=[UIFont systemFontOfSize:13];
questionLabel.numberOfLines = 0;
[questionLabel sizeToFit];
[myView addSubview:questionLabel];


J'ai écrit ce code pour afficher mes données. Mais si j'écris:
[questionLabel sizeToFit]

Mes données ne sont pas affichées correctement. Si je suppose
[questionLabel sizeToFit]

, Il est affiché, mais ne montre que la moitié des données.

Merci et avec respect.
Invité:

Christophe

Confirmation de:

NSString *yourString = @"write your label text here";
CGSize s = [yourString sizeWithFont:[UIFont systemFontOfSize:12] constrainedToSize:CGSizeMake/width, MAXFLOAT/ lineBreakMode:UILineBreakModeWordWrap];
questionLabel.frame = CGRectMake/0, 0, s.width, s.height/;


Vérifiez si cela aide.

Enzo

Confirmation de:

Je pense qu'il est préférable d'utiliser la réponse taus-iDeveloper Calculer la taille de l'étiquette.

Je veux juste dire que la raison pour laquelle votre code ne fonctionne pas est que vous n'avez pas installé le texte dans votre UILabel, alors sizeToFit Retour CGSizeZero /Donc, il n'apparaît pas à l'écran/. Vous devez définir le texte avant utilisation sizeToFit.

Agathe

Confirmation de:

J'ai découvert que si AutoLayout activé, puis la taille ne peut pas être capable de s'adapter

Hannah

Confirmation de:

Je suis Googled D Ci-dessus les problèmes et rencontré des informations sizeToFit, Il semble que c'est une erreur, et cela a déjà été signalé dans apple.
Ainsi, en tant que solution de contournement, vous pouvez utiliser ce code:


NSString * myText = [NSString stringWithString:@"some text"];

CGFloat constrainedSize = 265.0f;

UIFont * myFont = [UIFont fontWithName:@"Arial" size:19];

CGSize textSize = [myText sizeWithFont: myFont
constrainedToSize:CGSizeMake/constrainedSize, CGFLOAT_MAX/
lineBreakMode:UILineBreakModeWordWrap];



CGRect labelFrame = CGRectMake /0, 0, textSize.width, textSize.height/;

UILabel *label = [[UILabel alloc] initWithFrame:labelFrame];

[label setFont:myFont];

[label setText:myText];

Dominique

Confirmation de:

J'ai découvert que lorsqu'il est utilisé sizeToFit avec UILabel à InterfaceBuilder Vous devez changer de propriété Autoshrink avec "Taille de la police fixe" sur le "Taille de la police minimale". Ensuite, j'installez habituellement sa valeur sur 0.5, Assurez-vous qu'il fonctionne correctement.

Cyrille

Confirmation de:

Assurez-vous simplement que vous avez augmenté le nombre de lignes d'étiquettes. À la place


questionLable.numberOfLines = 0;

utilisation


questionLable.numberOfLines = 4;

Puisqu'il rendra le système calculer la plus petite largeur possible pour 4 Lignes.

Vous pouvez également y parvenir en utilisant le fichier. Xib..

Pour répondre aux questions, connectez-vous ou registre