我一直在尝试了解更多关于CAShapeLayer
使用路径设置动画的信息。我想到的第一件事是在弹开之前对边缘产生“压缩”网球的效果。
但我没有使用fillPath
图层的 ,而是尝试为该图层设置图像。所以我创建了另一个CALayer
,分配给它的内容属性一个图像并动画形状层的路径。
但结果是,图像并没有完全包裹在这条路径中,正如我希望的那样,它会随着路径的动画而增长和缩小,而是在路径动画的同时显示和覆盖图像。
我希望能够让这个图像完全被路径包裹起来,并且随着路径的动画化,无论形状如何,图像仍然被包裹在形状层的这个路径中。图像失真在这里不是问题。
我的想法是,例如,有一个我下载的网球图像,将其包裹CAShapeLayer
在一个倒置的泪珠状路径中(见图:)并从一个较小的倒置泪珠形状动画到一个较大的上侧-down 泪珠并最终显示一个圆圈(网球图像)。
是否有可能实现这一目标CAShapeLayer
?你能在这里给我一个样品吗?提前致谢。
添加代码:
嗨,这是我到目前为止所得到的(感谢@lnafziger)
//Setting up layer
- (void)setupLayer
{
self.caShapeLayer = [CAShapeLayer layer];<
self.caLayer = (CALayer*) self.layer;
self.caLayer.contents = (id)([UIImage imageNamed:"@yellowTennisBall.png"] CGImage]);
self.caLayer.mask = self.caShapeLayer;
}
//Animate the path of CAShapeLayer
- (void)bounce
{
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"path"];
animation.duration = 1.7;
animation.repeatCount = HUGE_VAL;
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
animation.fromValue = (__bridge id)[self defaultPath];
animation.toValue = (__bridge id)[self compressedPath];
animation.autoreverses = YES;
[self.caShapeLayer addAnimation:animation forKey:@"animatePath"];
}
对于上述效果并将 UIImage 包装在路径中,我在编码方面一无所获......