Question

I ai un seul UIView pour tirer un quelconque d'un ensemble d'éléments. Cela est, ma seule sous-classe UIView peut être dit de dessiner un carré, un cercle ou triangle par exemple.

Je voudrais avoir une transition pour retourner la vue afin que la UIView dessine une forme différente à mi-chemin, donc il semble que je suis le passage à une autre vue, mais vraiment je suis juste redessiner la affichage unique au niveau du point à mi-chemin de la transition.

Est-il possible de le faire, sans avoir recours à l'aide de deux UIViews différents et les échanger dans le bloc d'animation? Il serait un peu maladroit pour moi de ce que je dois remanier utiliser le mécanisme d'échange.

Idéalement tout ce que je besoin est un peu de rappel ou de la notification que l'animation est à mi-chemin, et je peux redessiner la vue avec la nouvelle forme alors.

Merci pour toute aide!

Était-ce utile?

La solution

Même si vous ne saviez le milieu de l'animation flip, je ne crois pas redessiner le contenu de la vue mi-animation serait quelque chose. Je pense que le contenu de la couche de la vue sont mises en cache au début de l'animation et ne changent pas le produit d'animation. En outre, votre vue se retrouverait inversée, de gauche à droite, à la fin de l'animation si vous n'avez pas eu une autre vue derrière elle.

Si vous souhaitez faire une animation personnalisée, vous pouvez briser ce en deux à l'aide de quelque chose comme Mike Lee Lemur de mise en œuvre fLIP je décris dans cette réponse . Après la première moitié de l'animation, vous pouvez redessiner le contenu de la vue et de compléter l'animation, se retrouver où vous avez commencé.

Cependant, pour moi, il semble plus maladroit de ne pas changer de vue en réponse à la transition. Il va certainement prendre beaucoup plus de code à faire.

Autres conseils

vous pouvez essayer de faire grincer comme ça. Par exemple, votre propriété animationDuration est réglé sur 2.0f. donc, le point de passage de la moitié est de 1 seconde, de sorte que vous pouvez utiliser

  

[self performSelector: @selector (yourCallbackMethod) withObject: néant afterDelay: 1.0f];

La seule façon que je connaisse que vous pouvez faire est de recréer l'animation à l'aide d'animation de base, puis surveiller l'animation dans la couche de présentation à l'aide d'une minuterie. Il n'y a pas KVO disponible dans les couches d'animation de base de sorte que vous devez surveiller explicitement.

En d'autres termes, il est sans doute pas la peine. Je vous suggère de penser à une autre façon de résoudre votre problème.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top