这个问题的目的不是知道UITableView
何时完成加载其数据(本文已回答(,而是知道UITableView
何时完成绘制其所有单元格。
visibleCells
在
- (UITableViewCell *)tableView:(UITableView *)iTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
方法不起作用,因为首次加载表视图时,尚无可见单元格。
这个想法是在刷新表视图时对单元格外观进行动画处理。
这似乎是一项复杂的任务,但我很惊讶 Apple 没有提供任何委托方法在表视图加载完成后使用。
最好尝试此方法,传递要重新加载的 indexPath 的NSArray
给定的动画集
- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation
希望它有效
相信有一种方法可以指示表格何时加载了它的单元格。 但是,您可以在绘制表格单元格时实现在表格单元格中进行动画处理的目标。
逻辑:
- UITableView 根据需要显示 UITableViewCells。
- 每个UITableViewCell都是UIView的一个子类。
- UIView 有 drawRect,每次绘制视图时都会调用它。
- 所以,把你的动画放在UITableViewCell的drawRect方法中,每当绘制它时,它都会动画化。
实现:
- 创建 UITableViewCell 的子类,
- 将此子类应用于表格单元格,
- 添加 drawRect 方法,以及
- 在 drawRect 方法中实现动画。
我在我的一个项目中做了这个,效果很好。它在加载或滚动表格以及旋转显示时绘制动画。使用这种方法,您无需知道表格何时完成加载 - 每个单元格在绘制时都会简单地进行动画处理。
最后一点 - 如果您将另一个视图控制器放在表视图的顶部然后关闭它,则可能需要重新加载表并将每个UITableViewCell设置为setNeedsDisplay。这将强制为每个 UITableViewCell 再次调用 drawRect。