2011-12-06 12 views
12

Soy muy nuevo para la programación de iOS, Objective-C, y la programación en general, así que discúlpeme si encuentra esta pregunta frustrantemente simplona.¿Cuál es el propósito del parámetro "forKey" cuando se agrega una CAAnimation a una capa?

Los documentos en el sitio web de Apple suelen ser geniales, pero estoy teniendo algunos problemas para tratar de entender ciertas partes de Core Animation. Quiero animar explícitamente la posición de un CALayer. Por lo que entiendo, tengo que crear un objeto CABasicAnimation, configurarlo con fromValue, toValue, etc., a continuación, agregarlo a una capa usando este método:

- (void)addAnimation:(CAAnimation *)anim forKey:(NSString *)key 

Mi problema es que no tengo ni idea de lo que el importancia del parámetro forKey: es. Por lo que he visto en ejemplos en línea, ¿no es obligatorio? Supongo que tiene algo que ver con la codificación de clave-valor? (Todavía no entiendo eso tampoco.) Incluso si no es obligatorio, me gustaría saber de qué se trata para poder aprovechar su utilidad en mi aplicación.

Gracias por cualquier ayuda que pueda ofrecer.

Respuesta

6

CALayer tiene varios métodos para obtener las animaciones que se han agregado a la capa. Si desea obtener, reemplazar o eliminar una animación particular del CALayer, debe darle la clave cuando llame a animationForKey: o elimineAnimationForKey :.

No es necesario que proporcione una clave, puede usar nil para la clave si no tiene ninguna necesidad particular de encontrar una animación particular por clave.

10

Le permite anular las animaciones. Por ejemplo, las animaciones implícitas creadas al mutar una propiedad animable implícitamente (como opacity) usarán el nombre de la propiedad como clave. De esta manera, si lo modifica nuevamente (para producir una nueva animación), la nueva animación reemplazará a la antigua en lugar de intentar que ambas animaciones se ejecuten simultáneamente.

+0

De acuerdo con Kevin. La capacidad de especificar una propiedad forKey puede detener la ejecución de la animación implícita cuando se tiene una animación explícita. Se explica muy bien en el vídeo de la Sesión 424 de la WWDC 2010 (Core Animation in Practice, Parte 1 - https://developer.apple.com/videos/wwdc/2010/). Lo explica mucho mejor que yo. –

5

Es solo un identificador para su animación. Puede llamar a animationForKey: y removeAnimationForKey: métodos más adelante con la clave especificada.

También porque la capa puede tener solo una animación por clave única, puede usar este valor como identificador para algún tipo de animaciones y todos los métodos ...ForKey: devolverán/eliminarán o reemplazarán la animación más reciente para un tipo o clave de animación determinada.

Cuestiones relacionadas