У меня есть UITableView, у которого есть пользовательский UITableViewCells, который является комментариями пользователей. Прямо сейчас у меня есть ячейки высотой 115.0 футов, но я хочу, чтобы высота изменялась в зависимости от того, как долго длится комментарий. Если в комментарии больше трех строк, я хочу, чтобы пользователь мог выбрать ячейку, а ячейка для расширения отображала весь комментарий. Я использую метод [UIView animateWithDuration: completion:
для расширения ячейки, но я не знаю, как определить правильный размер ячейки, которая должна основываться на длительности текста. Кто-нибудь может мне помочь? Вот код:Как рассчитать требуемую высоту динамического размера UITableViewCells на основе NSString
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.row == 0)
{
return 480;
}
else
{
if (self.cellType == 0)
{
return 115;
}
else
{
return 75;
}
}
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.row > 0)
{
NSIndexPath *path = [NSIndexPath indexPathForRow:indexPath.row inSection:indexPath.section];
UITableViewCell *cell = [tableView cellForRowAtIndexPath:path];
if ([cell isKindOfClass:[CommentCell class]])
{
CommentCell *cell = (CommentCell *)[tableView cellForRowAtIndexPath:indexPath];
UILabel *label = cell.commentBodyLabel;
NSString *theText = label.text;
CGSize constraintSize = CGSizeMake(label.frame.size.width, label.frame.size.height);
CGSize labelSize = [theText sizeWithFont:label.font constrainedToSize:constraintSize lineBreakMode:label.lineBreakMode];
CGFloat labelHeight = labelSize.height;
int numLines = (int)(labelHeight/label.font.leading);
NSLog(@"there are %i lines", numLines);
NSLog(@"The text height is %f", labelHeight);
if (numLines == 3)
{
//This is where I should expand the cell
}
}
Спасибо за быстрый ответ! –
Метод возвращает 0 для renderedSize. –