2011-03-28 18 views
19

me parece algo de código como esto:¿Cómo puedo saber los valores en CABasicAnimation keyPath

CABasicAnimation *anim = [CABasicAnimation animation]; 
anim.keyPath = @"transform.scale"; 
anim.fromValue = [NSNumber numberWithFloat:1.0]; 
anim.toValue = [NSNumber numberWithFloat:0]; 
anim.removedOnCompletion = NO; 
anim.fillMode = kCAFillModeBoth; 
anim.delegate = self; 
[self.view.layer addAnimation:anim forKey:@"scaleOut"]; 

y

anim.keyPath = @"transform.rotation.x"; 

Por lo que yo sé, keyPath es un método invoke encadenado. "transform.scale" para CALayer es aLayer.transform.scale. "transformar" es una propiedad de CALayer, "escala" es una "propiedad" de transformación. Pero la transformación de propiedad en CALayer es CATransform3D.

No existe una propiedad llamada "escala" o "rotación" en CATransform3D.

Mi pregunta es: ¿Cómo se identifican "scale" y "rotation" con keyPath?

Respuesta

23

Core Animation amplía KVC para admitir el direccionamiento directo de campos (o pseudocampos) de algunas propiedades de tipo estructura de capas. La característica se describe en Core Animation Extensions To Key-Value Coding.

+5

Por ejemplo, 'scale.xy' no está en esa lista. Entonces no está completo. ¿Dónde debería encontrar todas las rutas clave o las que faltan? –

2

No estoy seguro, pero encontré una solución que probablemente podría ayudar.

en Swift: En lugar de escribir una cadena que puede utilizar esto:

let shadowAnimation = CABasicAnimation(keyPath: #keyPath(CALayer.shadowRadius)) 

Al escribir CALayer. < - autocompletar debería darle los keyPaths disponibles.

Espero que esto ayude.

Cuestiones relacionadas