Tengo un CALayer para animar un cambio en el contenido de su imagen. Ahora, ¿cómo puedo cambiar el tiempo que toma esta animación?Cambiar el tiempo de animación para las propiedades de un CALayer
8
A
Respuesta
7
Es más o menos simple. Usted tiene un ivar CALayer *yourLayer
. A continuación, establece el delegado y poner en práctica el método delegado -(id<CAAction>)actionForLayer:forKey:
- (void)awakeFromNib {
yourLayer.delegate = self;
yourLayer.name = @"yourLayer";
}
- (id <CAAction>)actionForLayer:(CALayer *)layer forKey:(NSString *)event {
if([layer.name isEqualToString yourLayer.name]) { // Check for right layer
CABasicAnimation *ani = [CABasicAnimation animationWithKeyPath:event]; // Default Animation for 'event'
ani.duration = .5; // Your custom animation duration
return ani;
} else return nil; // Default Animation
}
10
Una forma diferente de hacer esto:
[CATransaction begin];
[CATransaction setValue:[NSNumber numberWithFloat:2.5f] forKey:kCATransactionAnimationDuration];
//Perform CALayer actions, such as changing the layer contents, position, whatever.
aCALayerObject.contents = [self newCALayerContents];
[CATransaction commit];
Ese código sería animar el cambio del contenido de la CALayer más de 2,5 segundos. También puede usar esto para desactivar completamente todas las animaciones. De esta manera:
[CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions];
19
Sólo puede llamar a:
[CATransaction setAnimationDuration:durationSecs]
en -layoutSublayers o cualquier otro lugar que se modifican las capas y esperar que animan de forma implícita. Esto afectará la transacción implícita actual y cualquier subtransacción dentro de esta.
Cuestiones relacionadas
- 1. Animación de opacidad CALayer
- 2. Animación principal Animación de máscara CALayer
- 3. Animación de UIView enmascarado, CALayer
- 4. Observación de cambios de propiedades animadas en un CALayer
- 5. Pausar animación CALayer con una animación con un retraso
- 6. Animación de la propiedad shadowPath de CALayer
- 7. CALayer con la animación de rotación
- 8. Hit Testing con CALayer usando las propiedades alfa del contenido de CALayer
- 9. CALayer Sombras desaparecen durante una animación UIView
- 10. ¿Cambiar las propiedades de la fuente UINavigationBar?
- 11. Animar propiedades personalizadas de CALayer dentro de una CATransacción
- 12. Usar el selector de un diseño para cambiar las propiedades de su hijo
- 13. Cómo mueves un CALayer al instante (sin animación)
- 14. iPhone: eliminar CALayer cuando parada de animación, CALayer flash antes de desaparecer
- 15. ¿Cómo cambiar las propiedades de un ejecutable? (Windows)
- 16. Cambie las propiedades de log4j en tiempo de ejecución
- 17. Enmascaramiento de un CALayer con otro CALayer
- 18. ¿Es posible cambiar las propiedades de una referencia web en tiempo de ejecución?
- 19. Animación de propiedades personalizadas con actionForKey: ¿cómo obtengo el nuevo valor para la propiedad?
- 20. Animation End Callback para CALayer?
- 21. Animation End Callback para CALayer?
- 22. CALa animación básica con la ruta CALayer no anima
- 23. ¿Hay alguna manera de usar un creador de estilos para las propiedades de las propiedades?
- 24. MATLAB: ¿Cambiar las propiedades de línea de una figura cargada?
- 25. ¿cómo se copia un CALayer?
- 26. UIButton cambiar el tamaño con la animación
- 27. Animar un camino de sombra CALayer
- 28. Aprovechamiento de la animación principal para la animación en OpenGL
- 29. El tamaño de CALayer es lento
- 30. Intentando cambiar las propiedades de una colección IQueryable
¿De dónde consigo el objeto 'CATransaction'? –
'' 'CATransaction''' es una clase. '' 'setAnimationDuration: seconds''' es un método de clase. En este caso, establece la duración de la transacción actual. –
Gracias, lo entiendo ahora. –