Core animation 关键帧动画

Core animation 关键帧动画,core-animation,cakeyframeanimation,Core Animation,Cakeyframeanimation,嗨,我正在从多个图像创建关键帧动画。我的问题是,我希望动画能立即从一个图像切换到下一个图像,而不是淡入淡出 CALayer *animLayer = [CALayer layer]; animLayer.bounds = CGRectMake(0, 0, width, height); animLayer.position = CGPointMake(0, 0); CAKeyframeAnimation *customFrameAnimation = [CAKe

嗨,我正在从多个图像创建关键帧动画。我的问题是,我希望动画能立即从一个图像切换到下一个图像,而不是淡入淡出

    CALayer *animLayer = [CALayer layer];
    animLayer.bounds = CGRectMake(0, 0, width, height);
    animLayer.position = CGPointMake(0, 0);

    CAKeyframeAnimation *customFrameAnimation = [CAKeyframeAnimation animationWithKeyPath:@"contents"];
    NSArray *sizeValues = [NSArray arrayWithObjects:(id)image1, (id)image2, nil];
    NSArray *times = [NSArray arrayWithObjects:[NSNumber numberWithFloat:0.0f], [NSNumber numberWithFloat:0.5f], nil]; 
    NSArray *timingFunctions = [NSArray arrayWithObjects: [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault], [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault], nil];

    [customFrameAnimation setValues:sizeValues];
    [customFrameAnimation setKeyTimes:times];

    customFrameAnimation.duration=5.0;
    customFrameAnimation.beginTime = 1e-100;
    customFrameAnimation.fillMode = kCAFillModeRemoved;
    customFrameAnimation.timingFunctions = timingFunctions;
    customFrameAnimation.removedOnCompletion = YES;
    [animLayer addAnimation:customFrameAnimation forKey:nil]; 

提前感谢。

您的动画需要将其计算模式设置为kCAAnimationDiscrete

查看描述如何使用calculationMode的:

关键时刻中的适当值 数组依赖于 calculationMode属性

  • 如果calculationMode设置为 kCAAnimationLinear,中的第一个值 数组必须是0.0和最后一个 值必须为1.0。价值观是 在指定的关键帧之间插值 时代

  • 如果设置了calculationMode 要kCAAnimationDiscrete,第一个 数组中的值必须为0.0

  • 如果 calculationMode设置为 kCAAnimationPaced或 关键时刻 数组被忽略

如果 keyTimes数组无效或无效 不适用于计算模式, 忽略keyTimes数组

然后您可以阅读计算模式的说明:

值计算模式

这些常量由 calculationMode属性

NSString*常量kCAAnimationLinear

NSString*常量kCAAnimationDiscrete

NSString*常数kCAAnimationPaced

常数

kCAAnimationLinear

简单线性 关键帧值之间的计算。
在Mac OS X v10.5及更高版本中提供。 在CAAnimation.h.中声明

kCAAnimationDiscrete

每个关键帧值依次使用,不进行插值 计算值。 可在 Mac OS X v10.5及更高版本。 在CAAnimation.h.中声明

kCAAnimationPaced

对关键帧值进行插值以生成偶数 整个动画的配速。
在Mac OS X v10.5及更高版本中提供。 在CAAnimation.h.中声明

换句话说,离散计算模式使动画跳转到每个关键帧,而不是动画/过渡到关键帧

致以最良好的祝愿