Core Animation permite animaciones personalizadas mediante la aplicación del método de actionForKey en su clase basada CALayer:¿Cómo puedo usar animaciones personalizadas para onOrderOut en Core Animation?
- (id<CAAction>)actionForKey:(NSString *)key {
// Custom animations
return [super actionForKey:key];
}
Entonces puede crear una animación y devolverlo para la acción onOrderIn
(es decir, cuando se añade la capa a otra capa) . Esto funciona bien. Si hago lo mismo para onOrderOut
(es decir, la capa se elimina de su supercapa), se ignora la animación devuelta y se aplica la animación predeterminada.
Mi objetivo es hacer un zoom en la capa (onOrderIn
) y fuera (onOrderOut
):
- (id<CAAction>)actionForKey:(NSString *)key {
if ([key isEqualToString:@"onOrderIn"] || [key isEqualToString:@"onOrderOut"]) {
CABasicAnimation *a = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
a.duration = 0.25;
a.removedOnCompletion = NO;
a.fillMode = kCAFillModeBoth;
if ([key isEqualToString:@"onOrderIn"]) {
a.fromValue = [NSNumber numberWithFloat:0.0];
a.toValue = [NSNumber numberWithFloat:1.0];
} else {
a.fromValue = [NSNumber numberWithFloat:1.0];
a.toValue = [NSNumber numberWithFloat:0.0];
}
return a;
}
return [super actionForKey:key];
}
zoom en las obras, enfocando hacia fuera no. En cambio, se utiliza la animación de fundido de salida predeterminada.
El código puede contener algunos errores tipográficos, como yo estoy escribiendo esto en otra máquina.
¿Alguien puede ayudar?
Ah, gracias.Voy a probar esto si lo necesito de nuevo, mientras escribimos una versión completamente diferente del software con Qt Jambi. ;) – Lemming