[Résolu] Faire tourner un CALayout

wiskywisky Membre
mai 2013 modifié dans API AppKit #1

Bonjour à  tous,


 


 


Voilà  bien longtemps que je n'ai pas posé une question. Cette fois ci, c'est un peu compliqué !


 


Dans une vue, j'ajoute un CALayer qui tourne grâce à  une CABasicAnimation dans une temps n. A la fin elle est relancé pour continuer l'animation.


 


Cependant, je souhaite que lorsque l'on clique sur un bouton, le sens de rotation s'inverse. J'ai tester pas mal de chose mais rien ne convient vraiment. Une solution fonctionnait mais le fait d'inverser le sens ralentissait l'animation.


 


L'animation doit être fluide et le changement de sens doit être pris en compte instantanément. Avec cela, il me faut connaitre à  tout moment l'angle actuel du CALayer.


 


Je vous joint le "projet" qui est plus un labs qu'autre chose.


 


Ma question est simple, comment faire tourner régulièrement (de façon fluide) le CALayer et contrôler la rotation ?


 


Mots clés:

Réponses

  • wiskywisky Membre

    Je me répond,


     


    Après quelques réflexion, j'ai trouvé la solution :


     


    1 tour = 360°


    1 tour = 5 secondes


     


    Donc 1° = 5/360 = temps pour 1 seconde.


     


    Lors d'un changement de sens, je détermine l'angle actuel. Cet angle est mon nouveau point de départ. L'arrivé étant toujours 0 ou 360 selon le sens.


    Je calcul donc l'écart entre le départ et l'arrivé en degrés. Puis je multiplie le nombre de degrés à  parcourir par le temps de parcours pour 1°. Cela me donne donc le temps de l'animation.


     


     


    Et me voilà  avec une animation fluide et régissant au quart de tour au clique sur le bouton...

Connectez-vous ou Inscrivez-vous pour répondre.