Iphone CABasic动画旋转

Iphone CABasic动画旋转,iphone,ios,Iphone,Ios,我正在使用一个简单的CABasic动画在视图中旋转图像。当用户触摸图像时,将调用Touchs Begined以允许旋转开始。当用户完成旋转图像时,将调用touchsended 触摸结束后,我再次将图像旋转到一个固定点。这是密码 CABasicAnimation *rotation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"]; double startRotationValue = 0; rotation.fro

我正在使用一个简单的CABasic动画在视图中旋转图像。当用户触摸图像时,将调用Touchs Begined以允许旋转开始。当用户完成旋转图像时,将调用touchsended

触摸结束后,我再次将图像旋转到一个固定点。这是密码

CABasicAnimation *rotation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];

double startRotationValue = 0;
rotation.fromValue = [NSNumber numberWithDouble:startRotationValue];
rotation.toValue = [NSNumber numberWithDouble:startRotationValue+0.25];
rotation.duration = 1.0;
rotation.fillMode = kCAFillModeForwards;
rotation.removedOnCompletion = NO;

[self.view.layer addAnimation:rotation forKey:@"rotating"];
在第二次选择图像之前,此操作效果良好。再次调用,但无法旋转图像。事实上,图像根本无法移动,我知道这与

rotation.fillMode = kCAFillModeForwards;
rotation.removedOnCompletion = NO;
我尝试在Touchs Start中调用removedOnCompletion,但这并不能解决问题

rotation.removedOnCompletion = YES

这里最好的方法是什么,视图没有正确注册旋转。移除完成。

首先,您通常不应该弄乱
填充模式
移除完成
。完全移除这些。那些叫你去惹他们的人几乎总是在解决错误的问题

rotation.removedOnCompletion = YES
他们想要解决的问题是,当动画完成并移除时,对象会“捕捉回”其原来的位置。原因是您从未在模型上实际设置值。这会在以后产生各种各样令人讨厌的小问题

在这一行之后:

[self.view.layer addAnimation:rotation forKey:@"rotating"];
加:

(您可能必须在此处使用临时变量来保存
变换
,对其进行修改,然后将其设置回原位。我自己通常不使用
旋转
属性。)


这将设置基础模型层,使其与动画的最终状态相匹配。

有趣的是,这里的许多帖子都提到使用fillmode和removeOnCompletion来避免动画捕捉回其开始位置。我将尝试转换以避免相同的场景,谢谢。