2012-08-24 10 views
15

Tengo un CALayer he añadido a mi punto de vista:CALayer se anima con el cambio de fotograma?

myView.myCALayer = [[CALayer alloc] init]; 
CGSize size = myView.frame.size; 
myView.myCALayer.frame = CGRectMake(0, 0, size.width, size.height); 
myView.myCALayer.backgroundColor = [[UIColor blackColor] CGColor]; 
[myView.layer addSublayer:myView.myCALayer]; 

Cuando intento cambiar el marco de la CALayer después de cambiar el marco de myView, el cambio de tamaño de la CALayer anima. No agregué animación al CALayer, así que no entiendo esto. Incluso he intentado llamar a removeAllAnimations en la capa antes de cambiar el tamaño y todavía anima el cambio de tamaño.

¿Alguien sabe qué podría estar pasando aquí?

Respuesta

34

En realidad hay una animación implícita al establecer algunos valores para un CALayer. Debe desactivar las animaciones antes de establecer un nuevo marco.

[CATransaction begin]; 
[CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions]; 

[myView.myCALayer.frame = (CGRect){ { 10, 10 }, { 100, 100 } ]; 

[CATransaction commit]; 

https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreAnimation_guide/AdvancedAnimationTricks/AdvancedAnimationTricks.html#//apple_ref/doc/uid/TP40004514-CH8-SW3

+14

Scotts derecha, pero alternativa a la segunda línea se puede utilizar [setDisableActions CATransaction: SÍ] como taquigrafía para la versión de clave-valor. Además, consulte "Propiedades animables" en la Guía de animación principal. Específicamente, menciona qué propiedades animables usan una animación implícita en cambios de valores simples de forma predeterminada. http://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/CoreAnimation_guide/Articles/AnimProps.html – Bobjt

Cuestiones relacionadas