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
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ésentationle 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"]
Vous pouvez mettre en pause des animations de couche en réglant la vitesse de l'animation à zéro, voir How to pause the animation of a layer tree.
Pour toute personne qui vient chercher, voici comment vous mettre en pause et reprendre des animations:
https://developer.apple.com/library/ios/#qa/qa2009/qa1673.html
Comment voulez-vous supprimer des animations de la vue? – Thanks
[myView.layer removeAllAnimations] ou [myView.layer removeAnimationForKey: @ "theAnimationKey"] –
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