Лучшие практики для рисования динамической высоты строки UITableView

Возможно, дубликат, но я не смог найти конкретный вопрос по SO, так что вот он.

Мне любопытно динамически изменять высоту для всех строк, как правило, потому что вы не знаете длину строки NSString, которая используется для метки.

Я знаю, что вы должны использовать этот метод делегата для изменения высоты строки:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

Проблема в том, что этот метод делегата вызывается ДО создания ячейки (т.е. вызывается до cellForRowAtIndexPath ).

Итак, я задумал создать фиктивную ячейку в viewWillAppear и метод, который добавляет высоту ячеек в массив, который сопоставляется с источником данных табличного представления (который в моем случае также массив).

viewWillAppear реализует один важный метод для получения высоты:

[NSString sizeWithFont: constrainedToSize: lineBreakMode:]

Затем в heightForRowAtIndexPath Я могу вернуть высоту ячейки следующим образом:

//cellHeights is an ivar populated in viewWillAppear
return [[cellHeights objectAtIndex:indexPath.row] floatValue];

Мне было интересно, есть ли лучший способ динамически изменять высоту строки?

Я понимаю, что это снизит производительность для большого количества строк (кажется, больше 1000). Но в моем случае мои строки никогда не приблизятся к этому числу. Так что снижение производительности незначительно.

Заранее спасибо!

10
задан David Nix 27 September 2011 в 23:09
поделиться