2009-05-30 7 views
8

J'ai plusieurs Core Animation en même temps. Ils ont tous un contexte et un id d'animation, où le contexte est l'objet qui est animé (objets UIImageView). Je voudrais les mettre en pause, afin que l'animation s'arrête temporairement, puis quand certaines choses sont faites, reprenez-la pour la compléter. Ces choses se produisent uniquement sur des mouvements de défilement très rapides dans un UIScrollView. Je veux améliorer les performances en arrêtant toutes les animations en cours mais pas celle qui fait défiler l'affichage défilement. J'ai implémenté une animation personnalisée de contentOffset pour cette vue de défilement.Existe-t-il un moyen de mettre en pause une animation de base et de la reprendre plus tard?

Répondre

4

La seule façon de contourner ce problème est la suivante.

Pour chaque vue que vous souhaitez arrêter l'animation:

Set Retirez toutes les animations de ce point de vue

Effectuez votre défilement

animations Recalculer

à la couche de présentation

le cadre de la vue

Ajouter de nouvelles animations à la vue

Je sais que ce n'est pas ce que vous voulez entendre, mais ce n'est pas aussi grave que ça en a l'air. Un bon moyen de suivre les vues que vous voulez arrêter est de leur donner une étiquette prédéterminée.


Pour supprimer des animations:

[myView.layer removeAllAnimations]

[myView.layer removeAnimationForKey: @ "theAnimationKey"]

+0

Comment voulez-vous supprimer des animations de la vue? – Thanks

+0

[myView.layer removeAllAnimations] ou [myView.layer removeAnimationForKey: @ "theAnimationKey"] –

+0

Cela peut être une question stupide, mais comment puis-je définir le cadre de la vue à la couche de présentation? Je suppose que vous ne parlez pas de la propriété frame de la vue ici. – kareman