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