【问题标题】:Erazor effect on UIViewUIView 上的橡皮擦效果
【发布时间】:2013-06-30 16:46:07
【问题描述】:

考虑 2 个视图;不透明(灰色)的一个覆盖有图形的那个。我想获得一种效果,例如橡皮擦以一定的速度沿着路径滑动,并将不透明的颜色擦除为透明,从而露出底层图形视图(见图)。

我能想出的唯一方法是拥有相当多的小视图而不是不透明的视图,并为这些视图设置动画。但这似乎是愚蠢而沉重的解决方案。

我在 CoreGraphics 和 CoreAnimation 方面从未有过任何严肃的经验,阅读这些文档可能会让菜鸟感到困惑。所以我问是否有人可以轻推我,读什么以及在哪里挖掘。任何帮助表示赞赏。

【问题讨论】:

  • 您希望橡皮擦沿着预定义的路径(CGPathUIBezierPath)移动,还是跟随用户的触摸?
  • @robmayoff,无用户触摸,预定义

标签: ios core-animation core-graphics


【解决方案1】:

最简单的解决方案是改变你的想法。不要想象擦除灰色以显示图像。想象一下在灰色之上绘制图像。

这样做的方法是将灰色视图放在图像视图后面,并使用CAShapeLayer 作为图像视图的图层蒙版。将您的“橡皮擦”路径设置为形状图层的path。将形状层的lineWidth 设置为您喜欢的任何宽度。将其fillColor 设置为[UIColor whiteColor].CGColor

如果你这样做,你会看到沿着路径的图像和其他地方的灰色。

要为“橡皮擦”的移动设置动画,请将CABasicAnimation 添加到形状图层。将形状层的strokeEnd 属性从@0.0f 动画化到@1.0f

【讨论】:

【解决方案2】:

使用 [UIColor clearColor] 简单地在灰色视图上绘制;无论在哪里出现这样的透明颜色,它都会显示底层视图。

您必须首先将灰色视图设置为 opaque=NO。这不会使灰色视图不可见,它只是向 iOS 提示它有透明部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-27
    • 2012-05-09
    • 2011-04-16
    • 2012-09-30
    • 1970-01-01
    • 2015-08-01
    相关资源
    最近更新 更多