为什么这个CATransaction的完成块从不触发?
[CATransaction begin];
[CATransaction setCompletionBlock:^{
// table animation has finished
NSLog(@"why does this section never execute?");
}];
[self.tableView beginUpdates];
[self.tableView reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:self.currentFeedItems.count inSection:0]] withRowAnimation:UITableViewRowAnimationFade];
[self.tableView endUpdates];
[CATransaction commit];tableview动画工作,但完成块从未执行。Apple文档中说,完成块是保证执行的。
发布于 2014-12-14 17:01:16
哦,天哪,这太模糊了,我很惊讶我发现了这个问题。
正在重新加载的单元格包含一个工作正常的UIActivityIndicatorView。当单元格重新加载时,它隐式地重新绘制表单元格,然后在表单元格中的该进程中发生startAnimating调用。不知何故,startAnimating调用会干扰CATransaction完成块。
当我将startAnimating调用包装在一个dispatch_async块中时,问题就消失了:
dispatch_async(dispatch_get_main_queue(), ^{
[self.loadingInd startAnimating];
});https://stackoverflow.com/questions/27470130
复制相似问题