2009-07-20 6 views
0

J'ai une animation de base en cours d'exécution et que vous voulez mettre en pause quand un bouton est pressé. Il y a donc une méthode -pauseAnimation. Lorsque l'animation est en pause, je souhaite que la vue animée reste dans l'état tel qu'il était en cours d'animation. c'est-à-dire que si une vue se déplace de la partie supérieure gauche vers la partie inférieure droite, et quelque part au milieu, l'animation est en pause, la vue doit rester au milieu. Existe-t-il un moyen de le faire? Pour autant que je me souvienne, il existe une option setAnimationsEnabled = NO, mais cela ne fonctionne pas lorsque l'animation s'exécute, n'est-ce pas?Comment suspendre une animation en cours d'exécution?

Répondre

1

Vous pouvez le faire en désactivant les animations, puis en définissant les valeurs des couches du modèle sur les valeurs des couches de présentation (pour toutes les propriétés qui définissent votre animation).

par ex. layer.transform = layer.presentationLayer.transform;

Reprise de l'animation = réactiver les animations et animer depuis les positions actuelles vers les positions finales souhaitées (vous devrez peut-être ajuster les courbes, etc. pour obtenir quelque chose d'acceptable).

+0

comment est-ce que je placerais les valeurs de calques de modèle aux valeurs de calques de présentation? myView.transform = myview.layer.transform? – Thanks

+0

Si vous travaillez avec UIViews, vous devez appeler view.layer pour avoir accès à la couche, donc view.layer.transform = view.layer.presentationLayer.transform. –