2009-05-30 24 views
8

Tengo varios Core Animation pasando al mismo tiempo. Todos ellos tienen un contexto y una identificación de animación, donde el contexto es el objeto animado (objetos UIImageView). Me gustaría ponerlos en pausa, de modo que la animación simplemente se detenga temporalmente, y luego, cuando se hayan hecho algunas cosas, reinícielo para completarlo. Estas cosas solo ocurren en movimientos de desplazamiento muy rápidos en un UIScrollView. Quiero mejorar el rendimiento al detener todas las animaciones en curso, pero no el que hace que la vista de desplazamiento se desplace. Implementé una animación personalizada de contentOffset para esa vista de desplazamiento.¿Hay alguna forma de pausar una Animación Core y reanudarla en algún momento posterior?

Respuesta

4

La única forma en que lo he solucionado es la siguiente.

para cada vista que desea detener la animación:

set marco de la vista a la capa de presentación

Eliminar todas las animaciones desde ese punto de vista

Realizar el desplazamiento

animaciones

Recalcular

Agregue nuevas animaciones a la vista

Sé que no es lo que quieres escuchar, pero no es tan malo como parece. Una buena forma de rastrear las vistas que desea detener es darles una etiqueta predeterminada.


Para eliminar animaciones:

[myView.layer removeAllAnimations]

[myView.layer removeAnimationForKey: @ "theAnimationKey"]

+0

¿Cómo eliminar animaciones desde el punto de vista? – Thanks

+0

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

+0

Esto podría ser una pregunta estúpida, pero ¿cómo configuro el marco de la vista en la capa de presentación? Supongo que no está hablando de la propiedad de marco de la vista aquí. – kareman

Cuestiones relacionadas