Tengo algún problema con CABasicAnimation. Es similar a esa publicación: CABasicAnimation rotate returns to original positionCABasicAnimation cómo obtener el ángulo de rotación actual
Por lo tanto, tengo uiimageview que gira en touchMove. En touchEnd invocar el método que sí lo hacen "animación de inercia":
-(void)animationRotation: (float)beginValue
{
CABasicAnimation *anim;
anim = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
anim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
anim.duration = 0.5;
anim.repeatCount = 1;
anim.fillMode = kCAFillModeForwards;
anim.fromValue = [NSNumber numberWithFloat:beginValue];
[anim setDelegate:self];
anim.toValue = [NSNumber numberWithFloat:(360*M_PI/180 + beginValue)];
[appleView.layer addAnimation:anim forKey:@"transform"];
CGAffineTransform rot = CGAffineTransformMakeRotation(360*M_PI/180 + beginValue);
appleView.transform = rot;
}
Esta animación trabaja muy bien, pero si invoco touchBegan antes animationRotation terminó, el ángulo de rotación es BeginValue. Necesito el ángulo de rotación actual de Cath. Como experimento, declaro el método
-(vod) animationDidStop:(CAAnimation *)anim finished:(BOOL)flag
{
NSLog(@"Animation finished!");
}
y parece funcionar. pero no sé cómo obtener ese valor de ángulo o CGAffineTransform para mi UIImageView en animationDidStop. ¿Es posible? Gracias.
Gracias, he intentado esto, funciona, pero no es como debiera. Usé la animación NSTimer ... pero gracias de todos modos :-) – frankWhite
Upvoted para el método de obtención de la rotación actualmente visible de la capa. – geraldWilliam