3

我有一个使用 CABasicAnimation 旋转的 uiimage。当我获得指南针更新时,我通过时间偏移更改/更新图像起点。

这很好用,但是当我从指南针获取更新并删除旧动画时,它会跳回到开始位置,然后再移动到新的开始位置。这会导致闪烁效果。是否可以同时删除和添加动画或以某种方式防止这种情况发生?

到目前为止,我的代码如下。

[self.waveImage.layer RemoveAllAnimations];

CABasicAnimation* animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
animation.fromValue = [NSNumber numberWithFloat:0.0];
animation.toValue = [NSNumber numberWithFloat:2.0 * M_PI];
animation.duration = 1.0;
animation.repeatCount = HUGE_VALF;    // Repeat forever           
animation.speed = 1.0/duration;
animation.timeOffset = startingPhase;
animation.fillMode = kCAFillModeForwards;

[self.waveImageView.layer addAnimation:animation forKey:@"transform.rotation.z"];
4

2 回答 2

0

尝试这个。

  • 摆脱 fromValue。当你不指定 fromValue 时,它​​使用动画的当前值

    删除时间阶段。您想从一开始就为新更改设置动画。timePhase 将导致它改变你的动画。

    不要使用重复计数。这将导致动画从开始到结束,然后快速返回并重复。

    添加动画.removedOnCompletion = NO。

于 2012-05-13T12:37:18.963 回答
0

你可以在这里详细查看

https://developer.apple.com/library/mac/#documentation/GraphicsImaging/Reference/CABasicAnimation_class/Introduction/Introduction.html

于 2012-05-11T14:02:33.657 回答