Comment mettre en pause et reprendre UIView Animation?
J'ai une UIView avec plusieurs UILabels qui est de l'animation, de haut en bas et vice versa. Une sorte de Autoque disons 🙂 j'utilise 2 fonctions:
-(void)goUp
-(void)goDown
Ces fonctions commencent une UIView animation à la position requise.Ils ont tous les deux un AnimationDidStopSelector défini qui appelle l'autre fonction à la fin. Tout cela fonctionne sans problème.
Lorsque vous touchez l'écran, à l'aide de touchesBegan, je voudrais mettre en pause l'animation en cours et de modifier la position verticale de la UIView à l'aide de touchesMoved événement. Dans touchesEnded je veux reprendre l'animation de la position de fin souhaitée.
Quelle serait la bonne façon de le faire?
Thomas
OriginalL'auteur Thomas Joos | 2010-07-09
Vous devez vous connecter pour publier un commentaire.
J'ai créé une catégorie sur UIView pour mettre en pause et arrêter les animations:
Cette approche ne semble pas bien jouer avec UIPercentDrivenInteractiveTransition.
OriginalL'auteur Antoine
En fait, vous pouvez encore mettre en pause le
UIView
animations sur la base de la réponse à la question que Vladimir lié à ce qu'il pause monCABasicAnimations
ainsi que monUIView
animations après que j'ai mis en œuvre toutes mes animations commeCABasicaAnimations
puis ajouté quelquesUIView
animations par la suite que j'avais pensé ne pas être mis en pause, mais ils n'ont pas de travail non plus. C'est le lien qui vous intéresse.Je voulais faire une pause mon point de vue donc je passe
self.view.layer
que la couche de pause. Mais pour ceux qui ne savent pas à propos deCALayer
's, passer dans leview.layer
que vous souhaitez en pause. ChaqueUIView
a unCALayer
, il suffit donc de passer dans la plus grandeview.layer
qui est pertinent pour vous. Dans le cas de Thomas, basé sur votre propre réponse, il semblerait que vous souhaitez passer dansself.containerView.layer
de pause.La raison que cela fonctionne est que
UIView
animations sont tout simplement une couche sur Core Animation. Au moins, c'est ma compréhension.Espère que cela aide les futurs personnes qui se demandent comment faire une pause animations.
OriginalL'auteur DonnaLea
Vladimir, la question sur les CAAnimations sens.. mais j'ai trouvé un moyen de "pause" afin que je puisse continuer à l'utiliser UIView animations:
Ce que je fais ici est d'utiliser la presentationLayer pour trouver les valeur x de la vue animée. Après que j'exécute une nouvelle animation qui remplace l'original d'animation. Assurez-vous de setAnimationBeginsFromCurrentstate:OUI pour cette. Ceci annule l'animation d'origine et met la vue animée de ne pas c'est la position de destination (ce qu'il fait automatiquement ), mais à la position actuelle de l'animation des proces..
Espère que cela aide les autres aussi! 🙂
Si vous définissez pausedX comme un int, il obtient en silence en fonte pour une CGFloat. frameStop est un CGRect, qui est une structure faite d'un CGSize et un CGPoint. Le point d'origine est une structure composée de deux CGFloats.
Comment pouvez-vous faire si vous animez une transformation plutôt qu'une image?
OriginalL'auteur Thomas Joos
Je ne suis pas sûr si c'est possible avec UIView directement, mais on peut certainement faire l'animation de la vue CALayers à la place. Voir cette question sur la suspension et la reprise de CAAnimations.
OriginalL'auteur Vladimir
Espère que ça va vous aider.
Lorsque vous appelez la Couche d'animer, il aura un effet sur toute la couche de l'arbre et submode couche animer.
OriginalL'auteur rbbtsn0w