Подтвердить что ты не робот

IPhone - Плавная анимация для изменения высоты UITableViewCell, включая обновление контента

Возможный дубликат:
Можете ли вы изменить изменение высоты на UITableViewCell при выборе?

У меня есть вид таблицы, в который, когда вы нажимаете на swich в ячейку, многие ячейки табличного вида могут изменять их высоту. Немного сложно вычислить, какие ячейки изменят свой размер, поэтому я бы не хотел вызывать дважды один и тот же код.

У меня есть метод heightForRowAtIndexPath (это сложный).

Есть ли способ анимировать увеличение или уменьшение функции ячейки, не влияя на ту, которая не изменяется?

Я пробовал UIView Анимации, reloadData для разделов с анимацией, но я не нашел ничего гладко. Я попытался поймать каждую ячейку, которая должна измениться и вызвать reloadData с анимацией в каждой ячейке. Он близок к работе, но ячейки обновляются один за другим. И, как я уже говорил, я не хочу этого делать, потому что я должен дважды вызвать метод heightForRowAtIndexPath.

Что бы я хотел, это то, что может анимировать каждую ячейку, которая имеет изменяющуюся высоту с чем-то вроде роста или уменьшения движения, а не затухающего.

Знаете ли вы, как это сделать? Еще одна вещь: содержимое ячейки немного меняется при изменении размера (некоторые добавленные тексты, изменение цвета фона и т.д.)

4b9b3361

Ответ 1

UITableView имеет аккуратный трюк для анимации изменений в высотах ячеек: если вы отправляете пустой блок обновлений в представление таблицы, он не будет вставлять или удалять какие-либо ячейки, но он все равно будет пересчитывать высоты ячеек для всей таблицы. Поэтому, хотя этот фрагмент кода выглядит странно, он должен это сделать:

[tableView beginUpdates];
[tableView endUpdates];

Если вы хотите изменить содержимое обновленных ячеек, вы также должны добавить один или несколько вызовов в reloadRowsAtIndexPaths:withRowAnimation: к блоку обновлений.