我画了几个圆圈,每个圆圈都填满了一个图像。当用户平移时,我想缩放/调整圆圈的大小。所以我一次又一次地调用drawRect,重新绘制每个GCRect,直到手势完成——当然动画很不稳定。在我的情况下, UIScrollView 不适合需要,因为我不想滚动,而是在用户平移时缩放圆圈。
除了使用 OpenGL ES 来实现这个功能外,还有什么办法吗?
我画了几个圆圈,每个圆圈都填满了一个图像。当用户平移时,我想缩放/调整圆圈的大小。所以我一次又一次地调用drawRect,重新绘制每个GCRect,直到手势完成——当然动画很不稳定。在我的情况下, UIScrollView 不适合需要,因为我不想滚动,而是在用户平移时缩放圆圈。
除了使用 OpenGL ES 来实现这个功能外,还有什么办法吗?
你真的需要为此定制绘图吗?您可以在没有 drawRect 的情况下轻松地将图像裁剪为圆形。
-drawRect:
使用 Core Animation,您可以设置图层的角半径。如果您只想在圆圈内显示图像,那么您可以将图像放在带有方形框架的图像视图中,并将图像视图层的角半径设置为框架宽度的一半。
现在,每次用户拖动时,您都可以更改图像视图层的边界和角半径。这将使它看起来像圆圈变大/变小。
也许您正在做一些只能使用 Core Graphics 才能完成的自定义阴影或混合。如果是这样,您可以在用户拖动手指时应用缩放变换并拉伸图像,并且仅在手指从屏幕上抬起时才重新绘制。这会便宜得多,而且也很容易实施。只需创建一个比例变换CGAffineTransformMakeScale(xScale, yScale);
(
注意:如果您需要额外的性能,如果您使用圆角半径方法,您仍然可以使用相同的技巧(拖动时缩放然后重绘)。