方法:(的CGRect)
问题描述:
我把一起在一个UITableView
饲料。我正在为我的UITableViewCells
添加自定义UIView
,并正在绘制drawRect:(CGRect)
中的单元格的所有内容。方法:(的CGRect)
这很好,当用户点击一个单元格时,我展开了单元格,并且子视图上的UITableViewCell再次调用了drawRect:(CGRect)
,并且绘制了所有内容以反映这一点。 这对性能很好,UITableViewCell只包含一个子视图,所有内容都直接绘制到CGContext中。现在
,我抛光料的功能,我想补充一些动画,以使其更清楚发生了什么用户。
我想在单元展开之前,期间和之后做动画。在drawRect中的做法是做一个“一次性”的方式,我明白,权衡是一样的优势,你没有一堆子视图的引用,你可以动画等 我怎么能去关于实施动画?
有没有呼吁子视图时cellHeight改变,我可以挂接到委托方法。如果我这样做,我必须将所有需要动画的元素制作成子副本,然后制作动画,删除它们,然后在上下文中重新绘制它们。
如果我尝试为每个可以显示的可想象的事件/动画制作条件块,我有点害怕走错了一条错误的路径,并最终失去drawRect的性能和可读性。
希望有人能指出正确的方向。 在此先感谢。
答
当调整您的细胞,这样做是为了动画单元调整尺寸处理:
[tableView beginUpdates];
[tableView reloadRowsAtIndexPaths:... withRowAnimation:YES];
[tableView endUpdates];
现在您单元的drawRect:
将呼吁动画,您可以衡量和实施的持续时间。可能出现
一个问题,如果一个一致的帧率并不总是能够达到,你不完成的动画。
我想一个更好的解决方案是使用CALayer
S和有动画的绘制。