Tengo dos animaciones que estoy tratando de realizar en un UILabel en el iPhone con sistema operativo 3.1.2. La primera mece la UILabel de ida y vuelta:Agrupar dos animaciones principales con CAAnimationGroup hace que una CABasicAnimation no se ejecute
CAKeyframeAnimation *rock;
rock = [CAKeyframeAnimation animationWithKeyPath:@"transform.rotation.z"];
[rock setBeginTime:0.0f];
[rock setDuration:5.0];
[rock setRepeatCount:10000];
NSMutableArray *values = [NSMutableArray array];
MovingMath *math = [[MovingMath alloc] init];
// Center start position
[values addObject:[math DegreesToNumber:0]];
// Turn right
[values addObject:[math DegreesToNumber:-10]];
// Turn left
[values addObject:[math DegreesToNumber:10]];
// Re-center
[values addObject:[math DegreesToNumber:0]];
// Set the values for the animation
[rock setValues:values];
[math release];
El segundo se acerca el UILabel de modo que se hace más grande:
NSValue *value = nil;
CABasicAnimation *animation = nil;
CATransform3D transform;
animation = [CABasicAnimation animationWithKeyPath:@"transform"];
transform = CATransform3DMakeScale(3.5f, 3.5f, 1.0f);
value = [NSValue valueWithCATransform3D:transform];
[animation setToValue:value];
transform = CATransform3DMakeScale(1.0f, 1.0f, 1.0f);
value = [NSValue valueWithCATransform3D:transform];
[animation setFromValue:value];
[animation setAutoreverses:YES];
[animation setDuration:30.0f];
[animation setRepeatCount:10000];
[animation setBeginTime:0.0f];
Adición de cualquiera de estas animaciones directamente a la capa de la UILabel funciona como se espera.
Sin embargo, si trato de agrupar las animaciones juntos, la primera "balanceo" de animación no funciona:
CAAnimationGroup *theGroup = [CAAnimationGroup animation];
theGroup.duration = 5.0;
theGroup.repeatCount = 10000;
theGroup.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
theGroup.animations = [NSArray arrayWithObjects:[self rockAnimation], [self zoomAnimation], nil]; // you can add more
// Add the animation group to the layer
[[self layer] addAnimation:theGroup forKey:@"zoomAndRotate"];
El orden de la adición de las animaciones para el grupo no importa. En lugar de hacer zoom, de la manera anterior, intenté cambiar los límites, pero tampoco fue exitoso. Cualquier idea sería muy apreciada. Gracias.
Para tener en cuenta mi comentario a continuación ... Quiero que estas animaciones sucedan al mismo tiempo. El problema es que al usar el grupo, RockAnimation no se ejecuta; solo zoomAnimation se ejecuta. – Christian