用动画重绘UIView

时间:2013-05-29 17:29:04

标签: ios uiview core-graphics core-animation

我是新手ios程序员&我正在做我的第一个ios项目。在我的项目中,我有几个UIViewUIViewController。在每个视图中,我都覆盖了drawRect方法并绘制了几个圆圈。在我的视图中,我需要绘制一个矩形,当我触摸它时,它会在动画下方绘制另外3个矩形。我想知道最好的方法是什么!我打算通过调用setNeedsDisplay来重新绘制视图,并用动画绘制其他三个矩形。我怎样才能实现这一点以及用动画执行这一特定事情最好的方法呢?

1 个答案:

答案 0 :(得分:1)

覆盖drawRect可能不是最适合您的解决方案,因为要完成许多类型的动画,您需要在计时器下重画多次。除此之外,您的绘图将通过CPU完成,您将无法利用任何硬件加速。

我建议在三个新矩形可见之前,在视图层次结构中添加三个UIViews,这些矩形应该是这些。将每个视图的backgroundColor属性设置为所需的矩形颜色,并将每个视图的alpha值设置为0.如果需要将矩形设置为视图的动画,则可以使用这样的代码:

[UIView animateWithDuration:0.2 animations:^{
    rectView1.alpha = 1.0;
    rectView2.alpha = 1.0;
    rectView3.alpha = 1.0;
}];

当然,更改适合您的应用程序的动画的持续时间,您也可以更改rectViews的其他属性。假设你希望rects淡入并且从侧面飞入。您可以通过在动画之前调整每个rectView的frame属性然后在动画块内部来完成此操作。