2009-09-10 6 views
5

J'ai deux largeurs possibles pour une chaîne que je veux afficher dans une étiquette dans une cellule de tableau, et j'ai besoin de calculer la hauteur de sorte que la hauteur de la cellule du tableau soit correctement enregistrée. Cependant, peu importe ce que je fais pour la taille contraignante, je reçois la même hauteur, ce qui est incorrect dans le cas où je veux. Le code im en utilisant:Pourquoi sizeWithFont: constrainedToSize: lineBreakMode: retourne une taille incorrecte?

CGFloat width = 300.0f; 
NSString * value = @"LongText LongText LongText LongText LongText LongText"; 
CGSize contentSize = [value sizeWithFont: [UIFont systemFontOfSize: 14.0f] 
         constrainedToSize: CGSizeMake(width, CGFLOAT_MAX) 
          lineBreakMode: UILineBreakModeWordWrap]; 

Lorsque la variable i inspecter contentSize, la largeur est de 252 et la hauteur est de 36 ce qui est attendu. Mais si au lieu de 300.0fi branchez 222.0f dans la variable width, la largeur est de 189 mais la hauteur est toujours de 36, et seuls les 4 premiers mots LongText sont affichés sur 2 lignes (la troisième ligne semble être coupée d'une façon ou d'une autre) calcul). Est-ce que quelqu'un sait pourquoi cela se passe?

+0

Si vous utilisez un UITextView, jetez un oeil à ma réponse ici: http://stackoverflow.com/questions/2330939/sizewithfont-doesnt-give-correct-height-for-uitextview-if-there-is -a-long-strin/15408198 # 15408198 – domsom

Répondre

3

Votre code semble correct. Regardez here et here pour voir s'il y a quelque chose d'anormal dans votre code.

+0

Merci, mais ceux-ci n'expliquent pas vraiment pourquoi la méthode ne se comporte pas correctement pour les largeurs plus minces. – Kevlar

+0

Non, votre code devrait fonctionner. Je pensais que vous verriez peut-être une différence entre leur code et le vôtre ... Je ne l'ai pas fait. – mahboudz

+2

à droite; Je me demande simplement si quelqu'un d'autre sait que le code pomme qui calcule réellement la taille n'est pas correct et s'il y a une alternative. – Kevlar

3

Il s'avère qu'il retourne la taille correcte; le code sur lequel je travaillais était en utilisant des largeurs incorrectes au lieu des largeurs de cette méthode qui est pourquoi le texte a été coupé et j'étais confus.

Questions connexes