我一直在尝试学习如何使用
但是,我并没有使用图层的
但结果是,图像并没有完全包含在这个路径内,正如我所希望的那样,在路径被动画化时,图像是被逐渐揭示和覆盖的。
我希望能够使这个图像完全包裹在路径中,并且当形状图层上的路径被动画化时,无论形状如何,图像仍然被包裹在此路径中。图像畸变在这里不是问题。
我的想法是,例如,下载一个网球图像,在倒置的类似水滴状路径中包裹它(见图片:
),并从一个较小的倒置的水滴形状动画到一个较大的倒置的水滴形状,最终显示一个圆形(网球图像)。
是否可以使用
CAShapeLayer
并使用路径进行动画效果。我首先想到的是,在网球反弹之前,它会对边缘产生"压缩"效果。但是,我并没有使用图层的
fillPath
,而是尝试将图像设置为该图层。所以我创建了另一个CALayer
,将其内容属性分配给一个图像,并动画化形状图层的路径。但结果是,图像并没有完全包含在这个路径内,正如我所希望的那样,在路径被动画化时,图像是被逐渐揭示和覆盖的。
我希望能够使这个图像完全包裹在路径中,并且当形状图层上的路径被动画化时,无论形状如何,图像仍然被包裹在此路径中。图像畸变在这里不是问题。
我的想法是,例如,下载一个网球图像,在倒置的类似水滴状路径中包裹它(见图片:
![enter image description here](https://istack.dev59.com/sXIYe.webp)
是否可以使用
CAShapeLayer
实现这一点?你能在这里给我一个示例吗?谢谢。//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,我尝试编写代码都没有得到任何进展...