2009-07-22 22 views
23

La documentación no habla mucho sobre lo que hace técnicamente.¿Qué hace fillMode exactamente?

fadeInAnimation.fillMode = kCAFillModeForwards; 

Realmente no veo el efecto de esto. Tengo una vista con alfa establecido en 0.0. Luego me desvanezco. Pero cuando elimino la línea abouth, nada cambia. Mismo comportamiento. Me gustaría entender qué es realmente este fillMode.

Respuesta

43

Desde el CAMediaTiming protocol documentation:

Determina si la presentación del receptor se congela o se retira una vez su duración activa ha completado.

Esto determina lo que ocurre al final de la animación. De forma predeterminada, está establecido en kCAFillModeRemoved, lo que significa que los cambios de animación se deshacen cuando se completa la animación. Si lo cambia a kCAFillModeForwards, los cambios causados ​​por la animación se mantendrán.

Tenga en cuenta que probablemente también necesite establecer la propiedad removedOnCompletion en NO para evitar que se elimine su animación, lo que haría que esta configuración no sea efectiva.

+0

Gran explicación! Sí, tengo el removeOnCompletion establecido en NO. Es por eso que no veo cambios en el modo de llenado, ¿verdad? ¿Por qué se llama "fillMode"? Entonces, internamente, ¿no es nada más que mantener los nuevos parámetros calculados después de todas las rutinas de interpolación de animación? – Thanks

+1

Entonces, ¿qué es 'removedOnCompletion' para if' fillMode' hace el trabajo? – jowie

+1

@jowie - Eso evita que la animación como un todo se elimine en su finalización. El modo de llenado simplemente lo bloquea en su estado final, pero si está configurado para ser eliminado cuando termine, la configuración fillMode no tendrá importancia. –

2

te voy a dar una respuesta más clarificada:
aunque en el establecimiento de la propiedad de la animación fillMode a kCAFillModeForwards (o kCAFillModeBoth) apariencia y en el establecimiento de removedOnCompletion a NO puede mantener su capa en su estado final, cuando la animación terminada mismo tiempo pero este uso de fillMode no es el camino diseñado. y en realidad hacer daño si tiene otra animación añadir a la misma el keyPath

(por cierto, el enfoque correcto para el estado final de animación torreón es cambiar el valor de la propiedad para que coincida con el cuadro final de la animación.)

lo que el fillModerealmente utilizar los está en conexión con una animación infantil dentro de una animación agrupados para que pueda especificar la animación infantil específico en estado deseado

Cuestiones relacionadas