繁体   English   中英

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

[英]Approach for doing animations in drawRect:(CGRect)

我正在将提要放到UITableView 我正在向UITableViewCells添加自定义UIView ,并在drawRect:(CGRect)绘制单元格的所有内容。

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

现在,我正在完善提要的功能,我想添加一些动画以使用户更清楚地了解正在发生的事情。

我想在单元格扩展之前,期间和之后制作动画。 drawRect方法是一种“一次性”的方法,并且我了解到折衷与优点相同,您没有一堆可以进行动画处理的子视图引用。 我如何去实现动画?

更改cellHeight时,可以挂接到子视图上的子视图上是否调用了任何委托方法。 如果这样做,我是否必须对所有需要制作动画的元素进行子视图“复制”,然后对其进行动画处理,将其删除并随后在上下文中重新绘制它们?

如果我尝试为每个可以显示的事件/动画制作条件块,我会害怕走错路,最终会降低drawRect的性能和可读性。

希望有人可以指出正确的方向。 提前致谢。

调整单元格大小时,请执行以下操作以动画化单元格大小调整过程:

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

现在将在动画的持续时间内调用单元格的drawRect:您可以对其进行测量和实施。

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

我认为一个更好的解决方案是使用CALayer并在此处对图形进行动画处理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM