使用平移手势来动画CGRect调整大小

时间:2012-07-17 15:42:11

标签: ios core-animation core-graphics

我正在画几个圆圈,每个圆圈都有一个图像。当用户平移时,我想缩放/调整圆圈的大小。所以我一次又一次地调用drawRect,重新绘制每个GCRect直到手势完成 - 当然动画非常不稳定。在我的情况下,UIScrollView不适合需要,因为我不想滚动,而是在用户平移时缩放圆圈。

除了使用OpenGL ES实现此功能外,还有其他方法吗?

1 个答案:

答案 0 :(得分:1)

你真的需要自定义绘图吗?您可以轻松地将图像剪切为圆形而无需drawRect。

没有-drawRect:

使用核心动画,您可以设置图层的角半径。如果您只想在圆圈内显示图像,则可以将图像放在带有方框的图像视图中,并将图像视图图层的圆角半径设置为框架宽度的一半。

现在,每次用户拖动时,您都可以更改图像视图图层的边界和角半径。这将使圆圈变得更大/更小。

如果您需要自定义绘图

也许你正在做一些只能用Core Graphics完成的自定义阴影或混合。如果是这样,您可以应用缩放变换并在用户拖动手指时拉伸图像,并且只有在手指从屏幕上抬起时才重绘。这将会更便宜,也更容易实施。只需创建一个缩放变换(CGAffineTransformMakeScale(xScale, yScale);)并将其设置为带圆圈的视图上的变换(这仅在每个圆圈都是自己的视图时才有效。)

注意:如果你需要额外的性能,如果你使用角半径方法,你仍然可以使用相同的技巧(在拖动然后重绘时缩放)。

相关问题