J'ai un C'est comme ça que je le fais pour utableview code> (regroupé!) Et besoin de calculer la hauteur de deux styles de cellules:
utableviewCellstyleFault code> et
uableviewcellstylevalue2 code>.
utableviewcellstylefault code>: strud> p>
utableviewcellstylevalue2 Code>: strong> p>
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);
6 Réponses :
Lorsque vous créez votre cellule, utilisez-vous la même police que celle que vous utilisez pour mesurer? P>
J'ai utilisé le tutoriel sur cette page et tout a fonctionné pour moi. Cela pourrait vous être utile aussi: P>
Oui, j'utilise la même taille et type de police (gras / pas audacieux). Je vais regarder le lien et voir si cela la résout et vous le ferai savoir.
J'ai découvert que je n'utilisais pas la police correcte! J'ai découvert que j'avais des problèmes avec les cellules Value2, parce que j'ai supposé qu'ils étaient fontacés 14, alors qu'ils sont en réalité 15. L'autre style de cellule dont je devais jouer avec la quantité de hauteur qu'il ajoute à la hauteur de texte.
Voici le code que j'utilise pour cela. Cela fonctionne comme un charme pour un type de cellule. Il peut avoir des pièces utiles pour votre application.
- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath: (NSIndexPath *) indexPath { AppAppDelegate *appDelegate = (AppAppDelegate *)[[UIApplication sharedApplication] delegate]; NSString *Text = ([[appDelegate.myTextSectionsDelegateDict objectAtIndex:indexPath.section] objectForKey:@"Text"]); UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:17.0]; CGSize constraintSize = CGSizeMake(280.0f, MAXFLOAT); CGSize labelSize = [Text sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap]; return labelSize.height + 15;}
Merci. J'ai fini par faire quelque chose seul avec les mêmes lignes. J'ai découvert que j'avais des problèmes avec les cellules Value2, car je suppose qu'ils étaient fontisisisez 14, tandis qu'elles sont effectivement 15. Pour votre code, vous voudrez peut-être ajouter: Résultat = max (labelsize.height + 15, 44.0f) ; Juste au cas où la cellule est jamais vide ou moins, 2 lignes, cela le retournera avec une hauteur minimale de la ligne de 44.0F, qui est la normale. S'il n'y a qu'une seule ligne, cela le rendra plus petit que 44.0F.
Il me semble que vous avez compris que vous utilisiez la mauvaise taille de texte. Vous voudrez peut-être simplement utiliser le J'ai utilisé en 1979 car selon la documentation, il ne faut pas renvoyer des valeurs supérieures à 2009. P> P> polices code> et
LinebreakMODE CODE> Propriétés de l'étiquette pour éviter ce problème à l'avenir, surtout si vous les changez dans la cellule ultérieure. De plus, pour l'amour de la lisibilité, je vais éviter d'ajouter à la hauteur avant de retourner un numéro. Au lieu de cela, j'essaierais quelque chose comme ceci:
Merci. Ouais, j'ai défini certaines constantes pour la taille de la police, donc si je le change pour la cellule, cela mettra à jour partout.
Quand travaille-t-il pour moi consiste à calculer la contrainte basée sur la largeur de la vue Tableau:
moyen le plus simple de le faire:
- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ CGFloat result = 10.0f; if(indexPath.section == 1) // here i compare the sections { result = 400.0f; } return result; }
Si vous voulez calculer la hauteur correctement pour CellValue2, vous devez utiliser:
Si vous n'utilisez pas audacieux, le texte remplira correctement, mais vous perdrez le rembourrage vertical correct. P>
Le reste de votre calcul est correct. p> [Uifont BoldsystemfontoFsize: 15.0f] Code> et comme LinebreakMode:
NsLebrebreakByStronCatiningTAIL code> P>