J'essaie de faire un UITableViewCell qui ajuste sa hauteur en fonction de la longueur d'une chaîne qu'il affiche, mais je suis accroché sur cette méthode.Pourquoi est-ce que sizeWithFont: constrainedToSize: lineBreakMode: retourne toujours zéro?
Voici ce que j'ai:
NSString *text = @"A really long string in here";
CGSize theSize = [text sizeWithFont:[UIFont boldSystemFontOfSize:18.0f] constrainedToSize:CGSizeMake(265.0f, MAXFLOAT) lineBreakMode:UILineBreakModeWordWrap];
NSString *stringHeight = [NSString stringWithFormat:@"%d", theSize.height];
Peu importe, stringHeight
affiche comme 0
. Qu'est-ce que je rate?
Merci!
Ahhh, le passage à '% f' totalement travaillé. J'avais l'impression que '% d' travaillait aussi pour 'floats', mais ce n'est clairement pas le cas. 'MAXFLOAT' semble bien fonctionner, bien qu'il fonctionne aussi bien avec un nombre suffisant. Merci pour la réponse rapide! – Triz
De même, '% d' = signé int, pas double (c'est la même chose que'% i'). '% f' (ou'% lf') fonctionnera pour les flotteurs et les doubles. (De plus, sous CGFloat est un double, mais cela ne s'applique évidemment pas ici.) – Wevah
La meilleure constante ici est probablement CGFLOAT_MAX, mais il n'y a aucun danger d'utiliser MAXFLOAT. L'un ou l'autre est plus clair que de choisir un grand nombre aléatoire, ce qui pourrait être interprété par les lecteurs ultérieurs comme une limite intentionnelle. –