我正在使用beginUpdates / endUpdates块对tableView进行更改。在整个过程中,我需要更新一个阴影,以便它反映tableView的当前组合。
我尝试为tableView的contentSize
设置KVO,但只有在动画完成后才会在endUpdates
上调用它。我想要的是每次contentSize
改变时调用它(即使它只是一个像素)。有没有办法实现这个目标?
答案 0 :(得分:24)
这个怎么样?
[CATransaction begin];
[CATransaction setCompletionBlock:^{
// animation has finished
}];
[tableView beginUpdates];
// do some work
[tableView endUpdates];
[CATransaction commit];
答案 1 :(得分:1)
鲁道夫的方法对我来说并不像预期的那样顺利。在我的情况下,我使用这个在UITableView
上选择一行,并且Rudolf的方法导致表格进行两次动画并稍微冻结:beginUpdates / endUpdates中的动画,一点冻结和完成块上的动画
[tableView selectRowAtIndexPath:indexPath
animated:YES
scrollPosition:scrollPosition];
这启发了我创建这个代码......这无缝地工作:
[UIView animateWithDuration:0.0 animations:^{
[tableView beginUpdates];
// do something to the table
[tableView endUpdates];
} completion:^(BOOL finished) {
// Code to run when table updates are complete.
}];
答案 2 :(得分:0)
很抱歉,我认为你不能这样做。在调用beginUpdates
之后对表格进行更改时,更改将在endUpdates
之后动画为单个动画。在这些动画期间没有动画回调。我没有试过这个,所以不知道它是否适用于此,但您可以尝试嵌套beginUpdates
和endUpdates
并在每个endUpdates
之后更新您的阴影。