使用以下代码为CALayer
的内容添加动画效果:
CAKeyframeAnimation *countanimation = [CAKeyframeAnimation animation];
NSArray *images = [NSArray arrayWithObjects:(id)[UIImage imageNamed:@"number3"].CGImage,
(id)[UIImage imageNamed:@"number2"].CGImage,
(id)[UIImage imageNamed:@"number1"].CGImage, nil];
[countanimation setKeyPath:@"contents"];
[countanimation setValues:images];
[countanimation setCalculationMode:kCAAnimationDiscrete];
[countanimation setDuration:3.0f];
[countanimation setDelegate:self];
[countanimation setAutoreverses:NO];
[countanimation setRemovedOnCompletion:NO];
[countanimation setValue:@"Countdown" forKey:@"name"];
[countDown addAnimation:countanimation forKey:nil];
想要在动画停止时隐藏图层:
- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag
{
if([[anim valueForKey:@"name"] isEqual:@"Countdown"])
{
[countDown setHidden:YES];
...
}
}
问题是图层在原始图像(数字3)处闪烁一次,之后隐藏。
我想知道为什么即使我将removedOnCompletion
设置为NO
,图层也会恢复原始图层。
答案 0 :(得分:4)
您可以将FillMode
属性与removedOnCompletion
属性结合使用,在repeatCount
结束后将第一帧设置回其内容。
[countanimation setFillMode:kCAFillModeBoth];
[countanimation setRemovedOnCompletion:NO];
我认为这两行代码可以帮助您获得所需的结果。
答案 1 :(得分:1)
我使用animation.fillMode = kCAFillModeForwards;
来解决此问题
答案 2 :(得分:0)
我将原始图像替换为number1,问题解决了。
答案 3 :(得分:0)
快速4 + 5
更新Jami对Swift 4和5的回答
colorAnimation.fillMode = .both
colorAnimation.isRemovedOnCompletion = false