Pregunta

Tengo una sola UIView para la elaboración de cualquiera de una serie de artículos. Es decir, mi subclase UIView uno puede ser contada para dibujar un cuadrado, círculo, triángulo o por ejemplo.

Me gustaría tener una transición para voltear ese punto de vista para que el UIView dibuja una forma diferente en el punto a mitad de camino, así que parece que estoy transición a un punto de vista diferente, pero en realidad sólo estoy volver a dibujar el única vista en el punto a mitad de camino de la transición.

¿Hay una manera de hacer esto, sin tener que recurrir a la utilización de dos UIViews diferentes e intercambiar a cabo en el bloque de animación? Sería un poco torpe para mí reajustar lo que tengo que utilizar el mecanismo de intercambio.

Lo ideal sería que todo lo que necesito es un poco de devolución de llamada o notificación de que la animación está en el punto medio, y luego puede volver a dibujar la vista con la nueva forma a continuación.

Gracias por cualquier ayuda!

¿Fue útil?

Solución

Incluso si sabía el punto medio de su animación de imágenes cambiantes, no creo volver a dibujar el contenido de la vista de mediados de animación haría cualquier cosa. Creo que el contenido de la capa de la vista se almacenan en caché en el comienzo de la animación y no cambian a medida que avanza la animación. Además, su vista terminaría invertida de izquierda a derecha, al final de la animación si no tiene otro punto de vista detrás de él.

Si desea hacer esto como una animación personalizada, se pueden romper este en dos mitades utilizando algo así como Mike Lee de Lemur aplicación tirón que describo en esta respuesta . Después de la primera mitad de la animación, se puede volver a dibujar el contenido de la vista y completar la animación, para terminar de vuelta donde empezó.

Sin embargo, me parece más torpe a no cambiar de vista en respuesta a la transición. Sin duda, tendrá un código mucho más que hacer.

Otros consejos

se puede tratar de hacer algo bajo como este. Por ejemplo, su propiedad animationDuration se establece en 2.0f. así, el punto medio es de 1 segundo, por lo que puede utilizar

  

[libre performSelector: @selector (yourCallbackMethod) withObject: nil afterDelay: 1.0f];

La única forma que conozco que se podía hacer esto es volver a crear la animación usando Core Animation y luego controlar la animación en la capa de presentación usando un temporizador. No hay MVA disponible en Core capas de animación así que hay que vigilar de forma explícita.

En otras palabras, es probable que no vale la pena. Yo sugiero que piense de una manera diferente para resolver su problema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top