Абсолютно,
Мне нравится устанавливать все данные в моей ячейке, передавая ей модель (просто объект NSO с данными в нем).Затем я создаю пользовательскую ячейку, в которой могут быть данные, заданные моделью, и добавляю функцию уровня класса для возврата размера.Это выглядит следующим образом.
TableViewDelegate:
-(float)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
XTableViewCellModel *model = [self modelForIndexPath:indexPath];
return [XTableViewCell cellHeight:model];
}
XTableViewCell:
+(CGFloat)cellHeight:(XTableViewCellModel*)model {
CGSize titleSize = [model.title sizeWithFont:model.titleFont
constrainedToSize:CGSizeMake(280, 9999)
lineBreakMode:UILineBreakModeTailTruncation];
return titleSize.height;
}
Обратите внимание, что установка lineBreakMode в UILineBreakModelTailTruncation вступает в силу только после достижения высоты 9999 точек,До этого текст переносится нормально.
Посмотрите мою фреймворк с открытым исходным кодом вокруг этого материала.Он имеет много изменяемых типов ячеек, построенных по умолчанию: https://github.com/andrewzimmer906/XCell