【问题标题】:Using panning gesture to animate GCRect resize使用平移手势为 GCRect 调整大小设置动画
【发布时间】:2012-07-17 15:42:10
【问题描述】:

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

除了使用 OpenGL ES 来实现这个功能,还有什么办法吗?

【问题讨论】:

    标签: ios core-animation core-graphics


    【解决方案1】:

    您真的需要为此定制绘图吗?无需 drawRect 即可轻松将图像裁剪为圆形。

    没有-drawRect:

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

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

    如果您需要自定义绘图

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

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

    【讨论】:

    • 我在没有drawRect的情况下尝试过,但不断改变cornerRadius非常不稳定。但现在我尝试使用 ImageViews + CGAffineTransformMakeScale ,它实际上非常好 :) 虽然可能会更平滑一些。现在的问题是:我不想用周围的圆圈缩放图像。图像应始终保持相同大小,只有圆圈应扩大和缩小,并或多或少地查看底层图像。有没有办法做到这一点?谢谢:)
    • 您可以在图像视图图层上使用蒙版(图层上有一个属性)并缩放蒙版,而不是缩放图像视图本身以显示更多或更少的图像。
    猜你喜欢
    • 2017-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-22
    • 1970-01-01
    相关资源
    最近更新 更多