以编程方式缓和 UIImageView 动画图像



除了在图像编辑软件中手动调整PNG之外,有没有办法以编程方式缓解此动画? 即:显示缓和效果。 我已经在网上看过了,但还没有看到答案,除非我使用了错误的关键字来搜索答案。

NSMutableArray * images = [@[] mutableCopy];
for (int i = currentFrame; i <= maxFrame; i++) {
    NSString * imageString = [NSString stringWithFormat:@"icon_introchart_%ld",i];
    UIImage * newImage = [UIImage imageNamed:imageString];
    [images addObject:newImage];
}
_introChart.animationImages = images;
_introChart.animationDuration = 2.0f;
_introChart.animationRepeatCount = 1;

编辑 ->但我仍然缺少一些东西:

CAKeyframeAnimation * animation = [CAKeyframeAnimation animationWithKeyPath:@"contents"];
[animation setCalculationMode:kCAAnimationLinear];
animation.duration = 2.0;
animation.values = images;
animation.repeatCount = 1;
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
[animation setRemovedOnCompletion:YES];
[_introChart.layer addAnimation:animation forKey:@"contents"];
// _introChart.animationImages = images;
// _introChart.animationDuration = 2.0f;
//_introChart.animationRepeatCount = 1;

编辑:我需要为"内容"提供CGImageRefs而不是UIImages...它现在有效。

UIImage * newImage = [UIImage imageNamed:imageString];
CGImageRef cgImage = [newImage CGImage];
[images addObject:(__bridge id)(cgImage)];

简单的UIImage动画就是这样 - 简单。你当然可以做你想做的事情,但是你必须使用真正的动画才能获得你想要的那种时间控制。最简单的方法可能是使用 CAKeyframeAnimation,它使您可以控制动画"帧"的时间。

最新更新