在旋转iPhone的同时修改CABasicAnimation

时间:2012-05-11 13:57:16

标签: iphone ios animation layer cabasicanimation

我有一个使用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"];

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

试试这个。

  • 摆脱fromValue。如果未指定fromValue,则使用 动画的当前值

    删除timePhase。你想要动画新的变化 开始。 timePhase将使它改变你的动画。

    不要使用重复计数。这将导致动画来自 它开始结束,然后重复并重复。

    添加animation.removedOnCompletion = NO。