iPhone - UITableViewCell高度变化的平滑动画,包括内容更新

时间:2011-02-18 22:48:45

标签: iphone uitableview animation resize

  

可能重复:
  Can you animate a height change on a UITableViewCell when selected?

我有一个表格视图,您可以在其中单击swich进入单元格,表格视图的许多单元格可能会更改其高度。计算哪些单元格会改变它们的大小有点复杂,所以我不想调用两次相同的代码。

我有heightForRowAtIndexPath方法(这是复杂的方法)。

有没有办法让细胞生长或减少特征的动画而不会影响不会改变的特征?

我已经尝试了UIView动画,reloadData用于带动画的部分,但是我找不到任何平滑的东西。 我试图抓住每个必须更改的单元格,并在每个单元格上调用带动画的reloadData。它接近工作,但细胞一个接一个地更新。正如我之前所说,我不想那样做,因为我必须调用两次heightForRowAtIndexPath方法。

我想要的是能够动画每个细胞的东西,这些细胞的高度会随着成长或减少运动而变化,而不是褪色。

你知道这样做的方法吗? 还有一件事,当尺寸变化时(一些文字添加,背面颜色变化,以及类似的东西),单元格的内容会发生一些变化。

1 个答案:

答案 0 :(得分:61)

UITableView有一个巧妙的技巧来动画单元格高度的变化:如果你向表格视图发送一个空的更新块,它将不会插入或删除任何单元格,但它仍然会重新计算整个表格的单元格高度。所以即使这段代码看起来很奇怪,它也应该这样做:

[tableView beginUpdates];
[tableView endUpdates];

如果您也想更改更新的单元格的内容,您当然必须向reloadRowsAtIndexPaths:withRowAnimation:添加一个或多个调用到更新块。