J'utilise autolayout pour mes nouveaux utablesViewCells dans un grand projet.
J'ai une vue sur la table où la hauteur de chaque ligne est calculée automatiquement, je n'utilise pas la fonction de déléguée J'ai déclaré une hauteur de rangée estimée: p> Ma question est la suivante: sur une autre tableViewController, il y a beaucoup d'utailviewcells, où je Besoin de manière programmatique de déclarer la hauteur de la cellule dans est-ce possible? p> p> hauteurfinrowrotindexpath code>. p>
hauteurfinxrofortdexpath code>. Je sais qu'il serait préférable de convertir toutes les cellules pour utiliser une solution unique, mais dans ce projet, il y a beaucoup de cellules différentes, je voudrais donc utiliser une solution de contournement et combiner la hauteur calculée de manière dynamique avec l'autolayouet et la ligne calculée par programme. Hauteur. P>
3 Réponses :
Calculez la hauteur du contenu de manière dynamique à l'aide de LimiteDrectWithSize code>.
Si vous avez un
uilabel code> qui est dynamique, vous pouvez utiliser les éléments suivants:
- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
/* Check Content Size and Set Height */
CGRect answerFrame = [YOUR_LABEL.text boundingRectWithSize:CGSizeMake(240.f, CGFLOAT_MAX) options:(NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading) attributes:@{NSFontAttributeName:[UIFont fontWithName:@"" size:14.0f]} context:nil];
CGSize requiredSize = answerFrame.size;
return requiredSize.height;
}
Vous pouvez essayer cela.
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { int topPadding = cell.yourLabel.frame.origin.x; int bottomPadding = cell.frame.size.heigth-(topPadding+cell.yourLabel.frame.size.height); NSString *text = [DescArr objectAtIndex:[indexPath row]]; CGSize maximumSize = CGSizeMake(cell.yourLabel.frame.size.width, 9999); CGSize expectedSize = [text sizeWithFont:yourCell.yourLabel.font constrainedToSize:maximumSize lineBreakMode:yourCell.yourLabel.lineBreakMode]; return topPadding+expectedSize.height+bottomPadding; }
Problème est que je n'ai pas un seul Uilabel dedans. Mais comme je vois la hauteur dynamique ne fonctionne que pour iOS8 et ci-dessus - alors quand je veux supporter iOS 8, alors je dois calculer la hauteur programmatique, ai-je raison?
@BrokeDid oui vous devez toujours calculer la hauteur par programme
Bonjour. Si ma hauteur de l'écran est de ~ 700, mais la hauteur calculée à partir de l'étiquette est de 1000, de sorte que mon étiquette puisse afficher tout texte, car la hauteur de retour 1000 pas
Si vous utilisez iOS 8 et plus, vous n'avez pas besoin de calculer la hauteur de manière dynamique. La mise en page automatique fera tout pour vous. Mais si vous utilisez moins que IOS 8, vous devez calculer la hauteur de la cellule.
pour iOS 8: p> et ajoutez ci-dessous le code de votre contrôleur: p > où merci p> p> p> P> estimérowheighighight code> doit être une hauteur maximale qui peut être pour votre cellule. p>