2010-07-28 4 views
0

J'ai 5 boutons sur un UIView que je voudrais tracer uniformément le long d'un chemin circulaire, et les faire tourner continuellement le long de ce chemin. Pour être clair, je ne veux pas faire tourner les boutons eux-mêmes, je veux juste qu'ils se déplacent le long du chemin circulaire.Rotation des UIButtons sur une vue

Quelle est la meilleure façon de gérer cela?

Répondre

1

Créez un UIBezierPath ou CGPath pour chaque bouton, en ajustant l'angle de départ et l'angle de fin pour prendre en compte les points de départ initiaux de chacun. Ensuite, pour chaque bouton/chemin, créez un CAKeyframeAnimation, donnez-lui le chemin, réglez-le sur auto-répétez et ajoutez-le au calque du bouton approprié. La méthode UIBezierPath+bezierPathWithArcCenter:radius:startAngle:endAngle:clockwise: vous aidera à créer les chemins circulaires. Vous aurez besoin de calculer les angles corrects, mais c'est juste un petit peu de maths.

1

Il n'y a aucune raison d'animer chaque bouton individuellement le long d'un chemin. Vous avez dit que vous avez 5 boutons sur un UIView. Tournez simplement cette vue à laquelle vous les avez ajoutés et tous les autres boutons tourneront pour fournir le même effet que ce que vous demandez avec un chemin.

L'astuce est que vous aurez besoin d'une animation explicite plutôt que les raccourcis d'animation UIView:

CABasicAnimation* rotationAnimation = 
      [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"]; 
[rotationAnimation setToValue:[NSNumber numberWithFloat:DegreesToRadians(360)]]; 
// Make a full rotation in five seconds 
[rotationAnimation setDuration:5.0]; 
// Repeat forever. 
[rotationAnimation setRepeatCount:HUGE_VALF]; 
// Make the animation timing linear 
[rotationAnimation setTimingFunction: 
         [CAMediaTimingFunction 
         functionWithName:kCAMediaTimingFunctionLinear]]; 

[[rotationView layer] addAnimation:rotationAnimation forKey:nil]; 

La variable rotationView est la vue qui contient tous les boutons. À ce stade, tout ce que vous devez vraiment faire est de calculer où vos boutons doivent être positionnés initialement. Tout le reste est géré pour vous.

+0

yup c'est très difficile ... mais qu'en est-il du texte du bouton ou de l'image du bouton ... son aussi tourner .... – makboney

Questions connexes