2011-01-20 9 views
13

CAAnimation proporciona la propiedad removedOnCompletion, cuyo valor predeterminado es YES.¿Qué hace exactamente removedOnCompletion = NO?

Vamos a reconocer estos hechos:

A) Núcleo de Animación sólo afecta a la presentación del árbol, pero no el árbol del modelo. Cuando termina una animación, termina viendo todo lo que está configurado en el Árbol de modelos. Puede establecer fillMode en kCAFillModeBoth, por ejemplo, que intercambiará el valor del Árbol de presentación al Árbol modelo una vez que la animación haya finalizado. Esto hace que la animación no se revierte (lo cual es más probable de lo que usted quiere).

B) Hice un experimento. removedOnCompletion = NO will NOT tiene el mismo efecto que kCAFillModeBoth o kCAFillModeForwards. Para ser más precisos: no tiene ningún efecto sobre cómo se ve el resultado cuando se termina la animación. Ya sea que se "elimine" o no, parece que no afecta al árbol de presentación en absoluto.

Para explicar lo que removalOnCompletion realmente hace, la documentación es demasiado débil en este sentido. No lo entiendo ¿Alguien puede explicar qué se eliminaría exactamente y cuál es el beneficio de no eliminarlo?

Supongo que Apple está hablando del objeto animador en sí, que se agrega a la capa con -addAnimation: forKey: ... pero de nuevo: ¿cuál es el sentido de mantenerlo?

Respuesta

12

removedOnCompletion:

Básicamente, es la animación retirado de las acciones de la capa cuando se hace que la animación.

YES - Si tiene la intención de utilizar la animación solo una vez, no necesita usar el método de delegado para eliminar la animación de la capa al finalizar.

fillMode:

Esta propiedad controla lo que sucede visualmente cuando se haya completado la animación, dependiendo del tipo de modo de relleno especificado.

12

Si removedOnCompletion es SÍ, la animación se eliminará al finalizar y no hay nada que "completar" en absoluto. Por lo tanto, si desea usar fillMode, debe establecer removedOnCompletion en NO.

+0

Sí fillmode no muestra ningún impacto ya que estamos eliminando la animación para que el objeto vuelva al estado original –

0

La capa de presentación de la vista se efectúa por la animación incluso se detuvo. Cuando elimine la animación, la capa de presentación volverá al valor de la capa del modelo de la vista, por lo que obtendrá un resultado como an0 apuntado.

Cuestiones relacionadas