考虑2个视图;不透明(灰色)的一个覆盖有图形的那个。我想获得一种效果,例如,如果橡皮擦以一定的速度沿着路径滑动,并将不透明的颜色擦除为透明,从而露出底层图形视图(见图)。
我能想出的唯一方法是拥有相当多的小视图而不是不透明的视图,并为这些视图设置动画。但这似乎是愚蠢而沉重的解决方案。
我在 CoreGraphics 和 CoreAnimation 方面从来没有任何严肃的经验,阅读这些文档可能会让菜鸟感到困惑。所以我问是否有人可以轻推我,阅读什么以及在哪里挖掘。任何帮助表示赞赏。
考虑2个视图;不透明(灰色)的一个覆盖有图形的那个。我想获得一种效果,例如,如果橡皮擦以一定的速度沿着路径滑动,并将不透明的颜色擦除为透明,从而露出底层图形视图(见图)。
我能想出的唯一方法是拥有相当多的小视图而不是不透明的视图,并为这些视图设置动画。但这似乎是愚蠢而沉重的解决方案。
我在 CoreGraphics 和 CoreAnimation 方面从来没有任何严肃的经验,阅读这些文档可能会让菜鸟感到困惑。所以我问是否有人可以轻推我,阅读什么以及在哪里挖掘。任何帮助表示赞赏。
最简单的解决方案是改变你的想法。不要想象擦除灰色以显示图像。想象在灰色之上绘制图像。
这样做的方法是将灰色视图放在图像视图后面,并使用 aCAShapeLayer
作为图像视图的图层蒙版。将您的“橡皮擦”路径设置为形状图层的path
. 将形状图层设置为lineWidth
您喜欢的任何宽度。将其设置fillColor
为[UIColor whiteColor].CGColor
。
如果你这样做,你会看到沿着路径的图像和其他地方的灰色。
要为“橡皮擦”的移动设置动画,CABasicAnimation
请在形状图层中添加一个。动画形状层的strokeEnd
属性从@0.0f
到@1.0f
。
只需使用 [UIColor clearColor] 在灰色视图上绘制;无论在哪里出现这样的透明颜色,它都会显示底层视图。
您必须首先将灰色视图设置为 opaque=NO。这不会使灰色视图不可见,它只是向 iOS 提示它有透明部分。