1

我最近开始创建自己的控件,但我似乎有点难以理解应该如何使用 drawRect。

基本上我有3个问题。

  1. 有条件的drawRect是个好主意吗?IE。基于属性或实例变量的不同绘图代码。

  2. 对 drawRect 的绘图进行动画更改的最佳方法是什么?例如,带有动画填充和卸载的燃油表控件。

  3. 最后,我看到的使用 drawRect 进行动画制作的示例倾向于使用计时器,这在实践中真的是一个好方法吗?似乎较重的应用程序会遇到该方法的问题。

我想第四个会是,也许,有一个更好的地方来做这种事情吗?

4

1 回答 1

2

有条件的drawRect是个好主意吗?IE。基于属性或实例变量的不同绘图代码。

当然,为什么不呢?如果您的drawRect:方法变得笨拙,您可以将其拆分为多个方法,然后drawRect:根据视图的属性调用这些方法。例如,您可以使用drawBackground,drawTitle等方法。

对 drawRect 的绘图进行动画更改的最佳方法是什么?例如,带有动画填充和卸载的燃油表控件。

那要看。对于非常小的视图,您可以setNeedsDisplay从计时器调用,但对于较大的视图,您经常会遇到这种方法的性能问题。

通过将多个子视图或图层组合成可以使用核心动画(或简化的UIView动画方法)进行动画处理的视图,通常可以更好地完成动画更改。

于 2012-05-22T11:42:50.340 回答