Forse un duplicato ma non ho trovato una domanda specifica su SO, quindi eccolo qui.Best practice per il disegno dinamico UITableView row height
Sono curioso di cambiare le altezze dinamicamente per tutte le righe, in genere, perché non si conosce la lunghezza di una NSString utilizzata per un'etichetta.
so è necessario utilizzare questo metodo delegato per modificare l'altezza delle righe:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
Il problema è questo metodo delegato viene chiamato prima della creazione della cellula (cioè chiamato prima cellForRowAtIndexPath
).
Quindi, quello che ho pensato è creare una cella fittizia in viewWillAppear
e un metodo che aggiunge altezze di cella a un array che si associa all'origine dati della vista tabella (che nel mio caso è anche un array).
viewWillAppear
implementa questo un metodo importante per ottenere l'altezza:
[NSString sizeWithFont: constrainedToSize: lineBreakMode:]
Poi nel heightForRowAtIndexPath
posso restituire l'altezza della cella in questo modo:
//cellHeights is an ivar populated in viewWillAppear
return [[cellHeights objectAtIndex:indexPath.row] floatValue];
mi chiedevo se ci fosse un modo migliore per modificare dinamicamente l'altezza della riga?
Mi rendo conto che questo peggiorerà le prestazioni per un numero elevato di righe (maggiore di 1000, credo). Ma nel mio caso, le mie file non si avvicinano mai a quel numero. Quindi il successo in termini di prestazioni è trascurabile.
Grazie in anticipo!
Peccato. Speravo anche in altre risposte. Grazie per il tuo contributo! –