IOS UITableview如何在表动画完成后采取行动

时间:2011-06-08 05:55:52

标签: ios animation tableview tableviewcell

如何在完成UITableview的动画时采取行动?

我正在尝试缩小UITableview单元格并删除收缩后不可见的单元格子视图。为了缩小单元格,我调用[tableview beginUpdates]和[tableview endUpdates],并更改由UITableview的highForForWowAtIndexPath数据源方法返回的单元格的高度。

挑战在于,我需要tableview完成收缩,以便在我删除子视图之前,子视图不在视线范围内。如果我在调用[tableview endUpdates]之后(或之前或之间)放置代码从单元格中删除子视图,那么子视图将很快被删除(它不会等待动画)并且它看起来很有趣。 / p>

我的想法是我希望能够设置完成动画后运行的回调,并删除回调中的subView

2 个答案:

答案 0 :(得分:19)

这个怎么样?

[CATransaction begin];

[CATransaction setCompletionBlock:^{
    // animation has finished
}];

[tableView beginUpdates];
// shrink the cells
[tableView endUpdates];

[CATransaction commit];

答案 1 :(得分:-4)

尝试使用NSNotifications类。事情即将发生时的事后通知,以及事情发生后的事后。您可以在同一通知方法中使用bool在“即将发生”和“已发生”之间切换。