J'ai un UITableView
(groupé!) Et besoin de calculer la hauteur de deux styles de cellules: UITableViewCellStyleDefault
et UITableViewCellStyleValue2
.heightForRowAtIndexPath pour NSStrings plus longs
Voilà comment je le fais pour UITableViewCellStyleDefault
:
CGSize textSize = {300.f, 200000.0f};
CGSize size = [myTextString1 sizeWithFont:[UIFont systemFontOfSize:14.0f] constrainedToSize:textSize lineBreakMode:UILineBreakModeWordWrap];
size.height += 30.0f;
result = MAX(size.height, 44.0f);
Et pour UITableViewCellStyleValue2
:
CGSize textSize = {207.f, 200000.0f};
CGSize size = [myTextString2 sizeWithFont:[UIFont systemFontOfSize:14.0f] constrainedToSize:textSize lineBreakMode:UILineBreakModeWordWrap];
size.height += 30.0f;
result = MAX(size.height, 44.0f);
Ma question, il leur dit de revenir hauteurs incorrectes et je pense qu'il est le textSize
où J'utilise des nombres incorrects. Avec les textes longs, la partie inférieure est raccourcie (généralement une ligne avec quelques mots), et pour les deux CellStyles, ils ont un espacement étrange au-dessus et en dessous du texte de la cellule.
Pour UITableViewCellStyleValue2
J'ai obtenu la taille de la largeur (207.0f
) de rendre le text.backgroundColor rouge, puis de calculer la taille de la boîte. 300.0f
largeur pour UITableViewCellStyleDefault
est la taille de la cellule avec .
Est-ce que quelqu'un sait quelles valeurs je dois utiliser pour calculer correctement la taille d'un NSString
et obtenir ainsi la taille appropriée pour mes cellules?
Merci
Merci. J'ai fini par faire quelque chose de seul avec les mêmes lignes. J'ai découvert que j'avais des problèmes avec les cellules Value2, parce que je supposais qu'ils étaient fontSize 14, alors qu'ils sont en réalité 15. Pour votre code, vous pouvez ajouter: résultat = MAX (labelsize.height + 15 44.0f); Juste au cas où la cellule est toujours vide ou moins de 2 lignes, elle retournera avec une hauteur de ligne minimale de 44.0f, ce qui est normal. S'il n'y a qu'une seule ligne, cela le rendra plus petit que 44.0f. – runmad