以编程方式 easeOut UIImageView animationImages
Programmatically easeOut UIImageView animationImages
除了在图像编辑软件中手动调整 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;
编辑:我需要为 "contents" 提供 CGImageRefs 而不是 UIImages...它现在可以工作了。
UIImage * newImage = [UIImage imageNamed:imageString];
CGImageRef cgImage = [newImage CGImage];
[images addObject:(__bridge id)(cgImage)];
简单的 UIImage 动画就是这么简单。你当然可以做你想做的事,但你必须使用真实的动画才能获得你所要求的那种时间控制。最简单的方法可能是使用 CAKeyframeAnimation,它可以让您控制动画 "frames" 的时间。
除了在图像编辑软件中手动调整 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;
编辑:我需要为 "contents" 提供 CGImageRefs 而不是 UIImages...它现在可以工作了。
UIImage * newImage = [UIImage imageNamed:imageString];
CGImageRef cgImage = [newImage CGImage];
[images addObject:(__bridge id)(cgImage)];
简单的 UIImage 动画就是这么简单。你当然可以做你想做的事,但你必须使用真实的动画才能获得你所要求的那种时间控制。最简单的方法可能是使用 CAKeyframeAnimation,它可以让您控制动画 "frames" 的时间。