Вопрос по objective-c, xcode, ios, iphone – Динамическая высота UITableViewCell

2

Хорошо, поэтому, прежде чем вы отметите это как повторяющийся вопрос, прочитайте его. Я реализовал код, предоставленный CIMGF, для динамического изменения размераUITableViewCell, Это работало впервые, но, похоже, не работает сейчас. Странно, правда? Во всяком случае, вот фрагменты кода:

- (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);
}

и соответствующий код дляcellForRowAtIndexPath является:

[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];

Где значения 45, 20, 260 установлены мной, чтобы получить точное местоположение начальной точки текста в ячейке и ее ширину. Значения верны и не нуждаются в модификации. Однако, когда я выполняю код, я получаю правильную высоту для ячейки (динамически регулируемая в соответствии с текстом)BUT descriptionLabel показывает максимум 2 строки текста. Это обрезает текст после этого. :(

@jonkroll Вы должны опубликовать это как ответ. omz
В вашемheightForRowAtIndexPath Вы рассчитываете высоту текста, используя ключ "описание", но вcellForRowAtIndexPath Вы выполняете вычисление, используя ключ & quot; eventD & quot; вместо. Я думаю, что это твоя проблема. jonkroll
нет, подождите ... это тоже самое ... я отредактирую свой вопрос proctr

Ваш Ответ

1   ответ
0

Ваше ограничение для метки описания содержит две константыCELL_CONTENT_WIDTH а такжеCELL_CONTENT_MARGINтогда какCGRect вы создаете содержит число (260). ЕслиCELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2) & GT; 260 тогда это должно быть твоей проблемой.

Добро пожаловать!
БИНГО .. супер наблюдение @тило. Спасибо! Я сделал соответствующие изменения и теперь он работает :) proctr

Похожие вопросы