iOS*_*Fun 4 core-animation cakeyframeanimation ios
我正在设置动画:
self.testAnimation = [CAKeyframeAnimation animationWithKeyPath:@"TestAnimation"];
[self.animationImagesAsCGImages addObject:( id )[UIImage imageNamed:@"c1.png"].CGImage];
[self.animationImagesAsCGImages addObject:( id )[UIImage imageNamed:@"c2.png"].CGImage];
[self.animationImagesAsCGImages addObject:( id )[UIImage imageNamed:@"c3.png"].CGImage];
[self.animationImagesAsCGImages addObject:( id )[UIImage imageNamed:@"c4.png"].CGImage];
[self.animationKeyframeTimings addObject:[NSNumber numberWithFloat:0.0f]];
[self.animationKeyframeTimings addObject:[NSNumber numberWithFloat:0.25f]];
[self.animationKeyframeTimings addObject:[NSNumber numberWithFloat:0.5f]];
[self.animationKeyframeTimings addObject:[NSNumber numberWithFloat:0.75f]];
self.testAnimation.values = self.animationImagesAsCGImages;
self.testAnimation.keyTimes = self.animationKeyframeTimings;
self.testAnimation.repeatCount = HUGE_VALF;
self.testAnimation.autoreverses = NO;
self.testAnimation.calculationMode = kCAAnimationDiscrete;
self.testAnimation.duration = 2.0f;
Run Code Online (Sandbox Code Playgroud)
然后将其称为:
[self.layer addAnimation:self.testAnimation forKey:@"TestAnimation"];
Run Code Online (Sandbox Code Playgroud)
但没有任何东西在显示
我已经看过几个关于kCAAnimationDiscrete的其他Stack帖子需要第一个时间为0.0f,正如你所看到的那样.
请指教?
Dav*_*ist 13
tl; dr:将动画关键路径更改为contents,如下所示:
self.testAnimation = [CAKeyframeAnimation animationWithKeyPath:@"contents"];
Run Code Online (Sandbox Code Playgroud)
在编写时,[CAKeyframeAnimation animationWithKeyPath:@"TestAnimation"];您试图TestAnimation在不存在的图层上为该属性设置动画.因此,对该属性的任何更改都没有视觉效果.
animationWithKeyPath: VS addAnimation:forKey:这并非罕见错过之间的差keyPath时创建的动画和key时添加的动画层.
创建新动画时,您可以指定应设置动画的属性的keyPath.如果在没有keyPath的情况下创建动画,则可以使用动画上的keyPath属性对其进行设置.
将动画添加到图层时,您可以指定一个键.此键仅用于使用CALayer上的animationForKey:方法访问动画.
由于您要在图像中添加图像,因此我假设您要在图像之间设置动画,在这种情况下,您应该使用contents属性作为关键路径.
从contents属性的文档:
提供图层内容的对象.动画.
...您可以将此属性设置为a
CGImageRef以显示图像的内容以代替图层的内容.
| 归档时间: |
|
| 查看次数: |
2120 次 |
| 最近记录: |