我正在UITableView
汇总一个Feed。我正在向UIView
添加自定义UITableViewCells
,并在drawRect:(CGRect)
中绘制单元格的所有内容。
这很好用,当用户点击一个单元格时,我展开单元格,并且子视图上的UITableViewCell再次调用drawRect:(CGRect)
,并绘制所有内容以反映这一点。
这非常适合性能,UITableViewCell只包含一个子视图,所有内容都直接绘制到CGContext中。
现在我正在抛弃Feed的功能,我想添加一些动画,以便让用户更清楚地了解正在发生的事情。
我想在细胞扩张之前,期间和之后做动画。 drawRect方法是一种“一次性”的方式,我理解权衡与优势相同,你没有一堆你可以动画的子视图引用等。 我怎样才能实现动画?
当我可以挂钩的cellHeight被更改时,是否在子视图上调用了任何委托方法。如果我这样做,我必须制作动画所需的所有元素的子视图“副本”,然后设置动画,删除它们并在之后的上下文中重绘它们吗?
如果我尝试为每个可以显示的可想象的事件/动画制作条件块,我有点害怕走错路并最终失去drawRect的性能和可读性。
希望有人能指出正确的方向。 提前谢谢。
答案 0 :(得分:1)
调整单元格大小时,请执行此操作以设置单元格大小调整过程的动画:
[tableView beginUpdates];
[tableView reloadRowsAtIndexPaths:... withRowAnimation:YES];
[tableView endUpdates];
现在,您可以在动画期间调用您的单元格drawRect:
,您可以对其进行测量和实施。
如果未始终达到一致的帧速率并且您没有完成动画,则可能会出现问题。
我认为更好的解决方案是使用CALayer
并在那里制作绘图动画。