有没有人有任何将渐变应用于CAShapeLayer的经验? CAShapeLayer是一个很棒的图层类,但它似乎只支持实心填充着色,而我希望它有一个渐变填充(实际上是一个可动画的渐变) .
与CAShapeLayer(阴影,形状,笔触颜色,动画形状路径)相关的所有其他内容都非常棒 .
我已经尝试将CAGradientLayer放在CAShapeLayer中,或者确实将CAShapeLayer设置为GradientLayer的掩码并将两者都添加到容器层,但这些都没有正确的结果 .
我应该继承CAShapeLayer,还是有更好的前进方向?
谢谢 .
3 回答
您可以使用形状的路径来创建蒙版图层并将其应用于渐变图层,如下所示:
如果您还想使用阴影,则必须在渐变图层下放置形状图层的“复制”,以回收相同的路径参考 .
这是一个很好的解决方案,但如果您在CAShapeLayer上创建一个不立即拥有该视图的类别,则可能会遇到意外问题 .
见Setting correct frame of a newly created CAShapeLayer
底线,获取路径的边界,然后使用路径边界设置渐变蒙版的帧并根据需要进行平移 . 这里的好处是通过使用路径的边界而不是任何其他框架,渐变将仅适合路径边界(假设这是你想要的) .
非常感谢@Palimondo给出了一个很好的答案!
如果有人正在寻找此解决方案的代码:1010391_ filling animation :
Extra . 如果您还需要"filling animation",请添加以下行: