如何在完成UITableview的动画时采取行动?
我正在尝试缩小UITableview单元格并删除收缩后不可见的单元格子视图。为了缩小单元格,我调用[tableview beginUpdates]和[tableview endUpdates],并更改由UITableview的highForForWowAtIndexPath数据源方法返回的单元格的高度。
挑战在于,我需要tableview完成收缩,以便在我删除子视图之前,子视图不在视线范围内。如果我在调用[tableview endUpdates]之后(或之前或之间)放置代码从单元格中删除子视图,那么子视图将很快被删除(它不会等待动画)并且它看起来很有趣。 / p>
我的想法是我希望能够设置完成动画后运行的回调,并删除回调中的subView
答案 0 :(得分:19)
这个怎么样?
[CATransaction begin];
[CATransaction setCompletionBlock:^{
// animation has finished
}];
[tableView beginUpdates];
// shrink the cells
[tableView endUpdates];
[CATransaction commit];
答案 1 :(得分:-4)
尝试使用NSNotifications类。事情即将发生时的事后通知,以及事情发生后的事后。您可以在同一通知方法中使用bool在“即将发生”和“已发生”之间切换。