5

我正在使用 CAShapeLayer 生成一些形状。实际上我有 4 个 CAShapeLayers 代表屏幕中的一些三角形。我使用 CGMutablePathRef 创建形状并设置每个 CAShapeLayer 的路径属性。三角形位于不同的 shapelayer 中,因为我必须以不同的方式为每个三角形设置动画。

我使用 CABasicAnimation 在我的视图控制器上执行一些动画,并对 CAShapeLayer 的路径属性进行动画处理,例如:

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@”path”];
animation.duration = 2.0;
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
animation.repeatCount = 1e100f;
animation.autoreverses = YES;
animation.fromValue = (id)initialPath;
animation.toValue = (id)newPath;
[shapeLayer addAnimation:animation forKey:@”animatePath”];

没关系,我可以绘制形状并为其设置动画。我的问题是,这使用默认的 alpha 混合(结果 = (alpha *foreground) + (1 - alpha) * background)来混合图像。我想要的是使用多重混合(kCGBlendModeMultiply),但我不知道如何混合 CAShapeLayer 绘图和混合模式。我已经成功地绘制了我的形状,创建了一个自定义 UIView 并覆盖了 drawRect 方法,但是我无法为这些形状设置动画。

有没有人成功改变 CAShapeLayer 的颜色混合?

4

0 回答 0