我正在尝试制作一个圆形图像,当用户拖动滚轮时旋转
这是我的代码:
CABasicAnimation *rotationAnimation;
rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
rotationAnimation.toValue = [NSNumber numberWithFloat:angleRadians];
rotationAnimation.duration = 10;
rotationAnimation.cumulative = YES;
rotationAnimation.repeatCount = 1.0;
rotationAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
[self.layer addAnimation:rotationAnimation forKey:@"rotationAnimation"];
我遇到的主要问题是,图像在完成后会被重置。
请帮忙吗?
答案 0 :(得分:4)
我认为你正在接近这个问题。核心动画主要用于动画短暂效果,如视图过渡,淡入淡出等。动画制作图层后,CA会丢弃其工作值并恢复图层的原始状态,这就是重置图像的原因。虽然毫无疑问可以使用CA做你想做的事情,但我认为这是艰难的。
要使图像跟踪用户的手指,我建议您只需从当前触摸位置计算所需的角度,并在触摸位置发生变化时将图像转换为该角度: -
- (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
double angle = /* calculate your angle in radians here */;
imageView.transform = CGAffineTransformMakeRotation( angle );
}