Dynamiczna wysokość UITableViewCell
Dobrze ... więc zanim zaznaczysz to jako powtarzające się pytanie, przeczytaj je. Zaimplementowałem kod podany przez CIMGF dla dynamicznej zmiany rozmiaruUITableViewCell
. Działało po raz pierwszy, ale teraz nie działa. Dziwne, prawda? W każdym razie oto fragmenty kodu:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
{
NSString *text = [[buzzList objectAtIndex:[indexPath row]] objectForKey:@"description"];
CGSize constraint = CGSizeMake(260, 20000.0f);
CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];
CGFloat height = size.height;
return height +25 +(CELL_CONTENT_MARGIN * 2);
}
i odpowiedni kod dlacellForRowAtIndexPath
jest:
[cell.descriptionLabel setLineBreakMode:UILineBreakModeWordWrap];
[cell.descriptionLabel setMinimumFontSize:FONT_SIZE];
[cell.descriptionLabel setNumberOfLines:0];
[cell.descriptionLabel setFont:[UIFont systemFontOfSize:FONT_SIZE]];
CGSize constraint = CGSizeMake(CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2), 20000.0f);
CGSize size = [[[buzzList objectAtIndex:indexPath.row] objectForKey:@"description"] sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];
cell.descriptionLabel.text=[[buzzList objectAtIndex:indexPath.row] objectForKey:@"description"];
CGRect rect=CGRectMake(45, 20, 260, size.height);
[cell.descriptionLabel setFrame:rect];
Tam, gdzie wartości 45, 20, 260 są ustawione przeze mnie, aby uzyskać dokładną lokalizację punktu początkowego tekstu w komórce i jej szerokość. Wartości są poprawne i nie wymagają modyfikacji. Jednak gdy wykonam kod, otrzymuję odpowiednią wysokość komórki (dynamicznie regulowana zgodnie z tekstem)BUT
descriptionLabel
pokazuje maksymalnie 2 linie tekstu. Obcina tekst po tym. :(