我最近开始创建自己的控件,但我似乎有点难以理解应该如何使用 drawRect。
基本上我有3个问题。
有条件的drawRect是个好主意吗?IE。基于属性或实例变量的不同绘图代码。
对 drawRect 的绘图进行动画更改的最佳方法是什么?例如,带有动画填充和卸载的燃油表控件。
最后,我看到的使用 drawRect 进行动画制作的示例倾向于使用计时器,这在实践中真的是一个好方法吗?似乎较重的应用程序会遇到该方法的问题。
我想第四个会是,也许,有一个更好的地方来做这种事情吗?
我最近开始创建自己的控件,但我似乎有点难以理解应该如何使用 drawRect。
基本上我有3个问题。
有条件的drawRect是个好主意吗?IE。基于属性或实例变量的不同绘图代码。
对 drawRect 的绘图进行动画更改的最佳方法是什么?例如,带有动画填充和卸载的燃油表控件。
最后,我看到的使用 drawRect 进行动画制作的示例倾向于使用计时器,这在实践中真的是一个好方法吗?似乎较重的应用程序会遇到该方法的问题。
我想第四个会是,也许,有一个更好的地方来做这种事情吗?
有条件的drawRect是个好主意吗?IE。基于属性或实例变量的不同绘图代码。
当然,为什么不呢?如果您的drawRect:
方法变得笨拙,您可以将其拆分为多个方法,然后drawRect:
根据视图的属性调用这些方法。例如,您可以使用drawBackground
,drawTitle
等方法。
对 drawRect 的绘图进行动画更改的最佳方法是什么?例如,带有动画填充和卸载的燃油表控件。
那要看。对于非常小的视图,您可以setNeedsDisplay
从计时器调用,但对于较大的视图,您经常会遇到这种方法的性能问题。
通过将多个子视图或图层组合成可以使用核心动画(或简化的UIView
动画方法)进行动画处理的视图,通常可以更好地完成动画更改。