IPhone - Плавная анимация для изменения высоты UITableViewCell, включая обновление контента
Возможный дубликат:
Можете ли вы изменить изменение высоты на UITableViewCell при выборе?
У меня есть вид таблицы, в который, когда вы нажимаете на swich в ячейку, многие ячейки табличного вида могут изменять их высоту. Немного сложно вычислить, какие ячейки изменят свой размер, поэтому я бы не хотел вызывать дважды один и тот же код.
У меня есть метод heightForRowAtIndexPath
(это сложный).
Есть ли способ анимировать увеличение или уменьшение функции ячейки, не влияя на ту, которая не изменяется?
Я пробовал UIView
Анимации, reloadData для разделов с анимацией, но я не нашел ничего гладко.
Я попытался поймать каждую ячейку, которая должна измениться и вызвать reloadData с анимацией в каждой ячейке. Он близок к работе, но ячейки обновляются один за другим. И, как я уже говорил, я не хочу этого делать, потому что я должен дважды вызвать метод heightForRowAtIndexPath.
Что бы я хотел, это то, что может анимировать каждую ячейку, которая имеет изменяющуюся высоту с чем-то вроде роста или уменьшения движения, а не затухающего.
Знаете ли вы, как это сделать?
Еще одна вещь: содержимое ячейки немного меняется при изменении размера (некоторые добавленные тексты, изменение цвета фона и т.д.)
Ответы
Ответ 1
UITableView имеет аккуратный трюк для анимации изменений в высотах ячеек: если вы отправляете пустой блок обновлений в представление таблицы, он не будет вставлять или удалять какие-либо ячейки, но он все равно будет пересчитывать высоты ячеек для всей таблицы. Поэтому, хотя этот фрагмент кода выглядит странно, он должен это сделать:
[tableView beginUpdates];
[tableView endUpdates];
Если вы хотите изменить содержимое обновленных ячеек, вы также должны добавить один или несколько вызовов в reloadRowsAtIndexPaths:withRowAnimation:
к блоку обновлений.