UITableView con l'altezza delle celle dinamica
-
02-10-2019 - |
Domanda
solo una domanda veloce. C'è un modo semplice per set dinamico l'altezza della cella in base al testo contenuto nelle celle? Scenario: raggruppati vista tabella con due sezioni. sezioni uno e due contengono il testo da un database (con diverse lunghezze di testo).
Ho guardato in alcuni tutorial e frammenti di codice, ma nulla sembra essere di alcun aiuto a me (o io m troppo spesso per farlo bene).
I apprezzerebbe qualche consiglio o un link ad un tutorial o meglio ancora alcune idee di codifica!
grazie!
Soluzione
Ok ecco la risposta: (Beh non compiuti però) ho un problema con l'esso e gradirebbe qualche aiuto in quanto mi sta facendo impazzire! (Ottengo un avvertimento: controllo raggiunge il termine della funzione non-vuoto)
Qualcuno può aiutarmi qui?
ecco il codice!
#pragma mark -
#pragma mark UITableViewDelegate methods
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [self newOrReusableCell];
if (indexPath.section == A_SECTION) {
NSUInteger row = indexPath.row;
NSString *text = [_centerArray objectAtIndex:row];
UILineBreakMode lineBreakMode = cell.textLabel.lineBreakMode;
CGFloat width = _tableView.contentSize.width - (kTableCellHPadding*2 + tableCellMargin*2);
UIFont* font = cell.textLabel.font;
CGSize size = [text sizeWithFont:font
constrainedToSize:CGSizeMake(width, CGFLOAT_MAX)
lineBreakMode:lineBreakMode];
if (size.height > kMaxLabelHeight) {
size.height = kMaxLabelHeight;
}
return size.height + kTableCellVPadding*2;
}
if (indexPath.section == B_SECTION) {
NSUInteger row = indexPath.row;
NSString *text = [_leftArray objectAtIndex:row];
UILineBreakMode lineBreakMode = cell.textLabel.lineBreakMode;
CGFloat width = _tableView.contentSize.width - (kTableCellHPadding*2 + tableCellMargin*2);
UIFont* font = cell.textLabel.font;
CGSize size = [text sizeWithFont:font
constrainedToSize:CGSizeMake(width, CGFLOAT_MAX)
lineBreakMode:lineBreakMode];
if (size.height > kMaxLabelHeight) {
size.height = kMaxLabelHeight;
}
return size.height + kTableCellVPadding*2;
}
}//i get the WARNING here!!