2010-09-16 10 views
1

Je suis en train de faire une image de cercle qui tourne lorsque l'utilisateur fait glisser la roueObjectif c - roue Rotation à l'aide radians

Voici mon code:

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"]; 

Le principal problème que j'ai bien, que l'image est réinitialisée quand elle est terminée.

Une aide s'il vous plaît?

Répondre

4

Je pense que vous abordez ce problème mal. Core Animation est principalement destiné à animer des effets transitoires tels que les transitions d'affichage, les fondus, etc. Après l'animation d'une couche, CA supprime ses valeurs de travail et l'état d'origine de la couche est restauré, ce qui explique la réinitialisation de votre image. Alors qu'il est sans doute possible de faire ce que vous voulez en utilisant CA, je pense que c'est difficile.

Pour faire une image de suivre le doigt de l'utilisateur, je vous suggère de calculer simplement l'angle que vous voulez de la position tactile actuelle, et de transformer l'image de cet angle chaque fois que les changements de position tactile: -

- (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    double angle = /* calculate your angle in radians here */; 
    imageView.transform = CGAffineTransformMakeRotation(angle); 
} 
+0

Merci un million! – Lilz