Может ли ячейка (UITableView) изменять свою высоту в режиме реального времени?

У меня есть ячейка с меткой, иногда текст метки меняется и ячейка должна немного расширяться. Я использую автоматическую компоновку и ячейки переменной высоты (вы знаете, UITableViewAutomaticDimension и AssessmentRowHeight). Кажется, что это не работает, если после изменения метки я не вызываю reloadData или не перезагружаю эту конкретную ячейку. Это нормально? Есть ли способ сделать это автоматически или без использования контроллера представления для перезагрузки ячейки, которая теперь должна иметь другую высоту? Спасибо.


person Ricardo    schedule 24.02.2016    source источник
comment
это нормально, вы должны вычислить место, занимаемое текстом в рамке ячейки, установить это значение в переменную, затем передать эту переменную в: (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath   -  person alessioarsuffi    schedule 24.02.2016
comment
Дело в том, что просто вызов reloadData или reloadRowsAtIndexPaths делает свое дело, нет необходимости вычислять вручную какую-либо высоту (потому что я использую autolayout). У меня проблема в том, можно ли это сделать автоматически или мне всегда приходится перезагружать вручную.   -  person Ricardo    schedule 24.02.2016
comment
хорошо, попробуйте вызвать [tableView beginUpdates] [tableView endUpdates], это должно перезагрузить фрейм ячейки на основе его ограничения и нового изменения текста   -  person alessioarsuffi    schedule 24.02.2016


Ответы (2)


У меня была аналогичная проблема в одном из моих приложений, и я добавил 2 ограничения, пусть d будет высотой метки по умолчанию 1. высота метки >= d, приоритет = 750 2. высота = d, приоритет = 1000 и атрибут ячейки uitableview для UITableViewAutomaticDimension Это сработало для меня.

person Keerthi Polepalle    schedule 29.02.2016

Сделайте высоту ячейки динамической (вы также можете добавить несколько меток в одну и ту же ячейку таким образом, и ваша увеличенная высота ячейки зависит от текста меток)

Добавить четыре ограничения в метку (сверху, снизу, впереди, сзади)

введите здесь описание изображения

Установить номер строки 0 и перенос слов в режиме разрыва строки

введите здесь описание изображения

Добавьте этот метод с двумя делегатами

-(CGFloat)tableView:(UITableView )tableView estimatedHeightForRowAtIndexPath:(NSIndexPath )indexPath 
{
    return 44;
} 

-(CGFloat)tableView:(UITableView )tableView heightForRowAtIndexPath:(NSIndexPath )indexPath 
{
   return UITableViewAutomaticDimension;
}
person Shrikant Tanwade    schedule 04.03.2016
comment
stackoverflow.com/questions/ 35789560/ - person Shrikant Tanwade; 04.03.2016