在drawRect中进行动画制作的方法:(CGRect)

时间:2011-04-17 09:37:24

标签: ios uitableview drawrect

我正在UITableView汇总一个Feed。我正在向UIView添加自定义UITableViewCells,并在drawRect:(CGRect)中绘制单元格的所有内容。

这很好用,当用户点击一个单元格时,我展开单元格,并且子视图上的UITableViewCell再次调用drawRect:(CGRect),并绘制所有内容以反映这一点。 这非常适合性能,UITableViewCell只包含一个子视图,所有内容都直接绘制到CGContext中。

现在我正在抛弃Feed的功能,我想添加一些动画,以便让用户更清楚地了解正在发生的事情。

我想在细胞扩张之前,期间和之后做动画。 drawRect方法是一种“一次性”的方式,我理解权衡与优势相同,你没有一堆你可以动画的子视图引用等。 我怎样才能实现动画?

当我可以挂钩的cellHeight被更改时,是否在子视图上调用了任何委托方法。如果我这样做,我必须制作动画所需的所有元素的子视图“副本”,然后设置动画,删除它们并在之后的上下文中重绘它们吗?

如果我尝试为每个可以显示的可想象的事件/动画制作条件块,我有点害怕走错路并最终失去drawRect的性能和可读性。

希望有人能指出正确的方向。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

调整单元格大小时,请执行此操作以设置单元格大小调整过程的动画:

[tableView beginUpdates];
[tableView reloadRowsAtIndexPaths:... withRowAnimation:YES];
[tableView endUpdates];

现在,您可以在动画期间调用您的单元格drawRect:,您可以对其进行测量和实施。

如果未始终达到一致的帧速率并且您没有完成动画,则可能会出现问题。

我认为更好的解决方案是使用CALayer并在那里制作绘图动画。