gpt4 book ai didi

ios - 使用蒙版为 UIImageView 设置动画(带有蒙版的核心动画)

转载 作者:行者123 更新时间:2023-12-01 17:44:39 26 4
gpt4 key购买 nike

我在 UIImageView 中有一个 UIImage(图像上的对象)。它需要动画到右边,但是这个动画需要用这个圆形 mask 来 mask 。
enter image description here

我目前的代码是:

CGMutablePathRef path = CGPathCreateMutable();

CGPathAddArc(path, NULL, 44, 44, 21, 0, 2 * M_PI, NO);

CAShapeLayer *shapeLayer = [[CAShapeLayer alloc] init];
[shapeLayer setPath:path];
[shapeLayer setFillColor:[[UIColor blackColor] CGColor]];
[shapeLayer setBounds:CGRectMake(0, 0, 44, 44)];
[shapeLayer setPosition:CGPointMake(0, 0)];

UIImageView *loadingShape = [[UIImageView alloc] initWithFrame:CGRectMake(6.5, 7.5, 89, 40)];
[loadingShape setImage:[UIImage imageNamed:@"object_image.png"]];
[self addSubview:loadingShape];
// Set the mask for the image view's layer
[[loadingShape layer] setMask:shapeLayer];

[UIView beginAnimations:nil context:nil];
[UIView setAnimationCurve: UIViewAnimationCurveEaseOut];
[UIView setAnimationDuration:0.3];
[UIView setAnimationRepeatCount:10];
[loadingShape setFrame:CGRectMake(0, 7.5, 89, 40)];
[UIView commitAnimations];

但这会使我的整个 UIImageView 蒙面。我需要面具是静态的,只是背后的对象是动画。

做到这一点的最佳解决方案是什么?

最佳答案

mask 层shapeLayer就好像它是另一层的子层 [loadingShape layer] .当父层移动时,子层也随之移动。

除了您当前的动画,您还必须为 shapeLayer 设置动画。 , 反方向。

编辑: -[UIView beginAnimations:context:]建立的动画不会自动应用于裸机 CALayer ,所以手动设置动画。

CGPoint p = /* you decide the new position of the shapeLayer */;
CABasicAnimation* anim = [[CABasicAnimation alloc] init];
anim.toValue = [NSValue valueWithCGPoint:p];
anim.keyPath = @"position";
anim.timingFunction = [CAMediaTimingFunction functionWithName:@"easeOut"];
anim.duration = 0.3;
anim.repeatCount = 10;
[shapeLayer.mask addAnimation:anim forKey:nil];
[anim release];

关于ios - 使用蒙版为 UIImageView 设置动画(带有蒙版的核心动画),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9834212/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com