动画旋转

时间:2009-07-28 21:13:00

标签: core-animation rotation

  

可能重复:
  Why CAAnimation Rotation is returning to previous state

我正在尝试使用CATransform3DMakeRotation为旋转设置动画,但问题是一旦动画完成,图像就会回到其初始位置,即回零。但我想把它保留在完成旋转的地方。我该怎么做?

修改 我正在尝试做的是创建与新iPhone一起提供的相同指南针。基本上,位置管理员每隔几秒钟(或每秒几次)给我新的标题。使用新标题和时间戳,我试图获得一个平滑的图像动画,但没有到达任何地方。似乎唯一有用的是直接应用变换,例如:

compassimage.layer.transform = CATransform3DMakeRotation(newHeading.trueHeading *M_PI/180,0,0,1.0): 

但那不是动画......

3 个答案:

答案 0 :(得分:0)

您应该将animation.removedOncompletion设置为NO

答案 1 :(得分:0)

好的,回到基础,尝试将图像旋转90度并保持在那里。将以下代码添加到 - (void)viewDidLoad但是即使它旋转它仍然会在动画结束后返回到它的初始位置

CATransform3D rotationTransform = CATransform3DMakeRotation(M_PI,0,0,1.0);

CABasicAnimation* rotationAnimation;
rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform"];
rotationAnimation.toValue = [NSValue valueWithCATransform3D:rotationTransform];
rotationAnimation.duration = 2.0f;
rotationAnimation.removedOnCompletion = NO;

[image.layer addAnimation:rotationAnimation forKey:@"rotationAnimation"];

答案 2 :(得分:0)

你所要做的就是改变数字,使其为负数。

compassimage.layer.transform = CATransform3DMakeRotation(-newHeading.trueHeading *M_PI/180,0,0,1.0):