动画 layer.mask(不是形状图层的 .path)

Animate layer.mask (not the .path of a shape layer)

动画化 CAShapeLayer 的路径相对容易。

(这方面的好文章:

let shapeLayer = CAShapeLayer()
shapeLayer.path = .. some bezier
... CABasicAnimation(keyPath: "path")

但实际上可以在 UIView 中设置动画 layer.mask 吗?

回想一下

  1. UIView 的实际 layer.mask 实际上会屏蔽 UIView 的子视图。

  2. 带有路径的 CAShapeLayer 不会屏蔽 UIView 的子视图;它只是掩盖自己并在该视图上创建漂亮的图片。

你能为 UIView 的 .layer.mask 设置动画吗?

是的,你可以。为此,我创建了一系列 "wipe" 过渡动画。您只需将 CAShapeLayer 设为蒙版,然后为该蒙版形状图层的路径设置动画。 (在我的例子中,我对路径的开始或结束 属性 进行了动画处理。)

此时线程已经很老了,代码是用 Objective-C 编写的,但这里有一个 SO 线程解释了如何使用 [=10= 创建 "clock wipe" 动画] 作为图层蒙版。

How do you achieve a "clock wipe"/ radial wipe effect in iOS?