deleted-mezhevikin
@deleted-mezhevikin

Разчет высоты UITableViewCell по высоте текста?

Есть ячейки с динамической высотой, считаю с помощью метода:

- (CGFloat)heightByTextLabel
{
    float width = self.contentView.frame.size.width;
    float margin = 10;
    CGSize constraint = CGSizeMake(width - (margin * 2), 2000);
    CGSize size = [self.textLabel.text
                   sizeWithFont: self.textLabel.font
                   constrainedToSize:constraint
                   lineBreakMode:self.textLabel.lineBreakMode];
    CGFloat height = MAX(size.height, 44.0f);
    return  height + (margin * 2);
}


в 90 % расчитывается правильно, но иногда неправильно (меньшей высотой)
  • Вопрос задан
  • 2788 просмотров
Пригласить эксперта
Ответы на вопрос 1
kaspartus
@kaspartus
Выглядит вполне толково, по идее должно работать, я бы тут предложил 2 варианта:
1. Дебажим. Ставим брейкпоинты, логируем и прочее.
2. В книжке видел пример для динамического расчета высоты ячейки.

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
  static UILabel* label; 
  if (!label) {
    label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, FLT_MAX, FLT_MAX)];
    label.text = @"test";
  }
  label.font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline];
  [label sizeToFit];
  return ceilf(label.frame.size.height * 1.7); 
}


Сам пробовал - работает. Думаю, переделать увеличение высоты с x1.7 на +2margin проблем не составит.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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