Pregunta

He creado una nueva aplicación basada en vistas en XCode.

En el ViewController, el único código que he modificado se ve así:

- (void)viewDidLoad {
[super viewDidLoad];

UIView *newView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
newView.backgroundColor = [UIColor redColor];
[self.view addSubview:newView];


[CATransaction begin];
[CATransaction setValue:[NSNumber numberWithFloat:0.5f] forKey:kCATransactionAnimationDuration];

newView.layer.frame = CGRectMake(20,20,220,220);

[CATransaction commit];
}

Debería crear un cuadrado rojo que se anime durante medio segundo tan pronto como se cargue la aplicación. El problema es que no se anima. No puedo entender por qué. Creé este proyecto simple para aislar todas las variables, y aún así no funciona.

¿Puede alguien ayudarme o indicarme la dirección correcta de algún material de lectura Core-Animation? Ya he pasado por todas las cosas de Apple.

¿Fue útil?

Solución

Su código se animaría como se esperaba si estuviera configurando propiedades en un CALayer (se animan de forma predeterminada). Para que las UIViews se animen, debe cambiar sus propiedades dentro de un bloque como el siguiente:

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.0f];

// Change properties here

[UIView commitAnimations];

Las transacciones CAT se utilizan para agrupar animaciones para que estén coordinadas, o deshabilitar manualmente las animaciones para un grupo de objetos.

Otros consejos

¿Puede alguien ayudarme o indicarme la dirección correcta de algún material de lectura Core-Animation? Ya he pasado por todas las cosas de Apple.

Consulte: Core Animación para Mac OS X y el iPhone: Creación de interfaces de usuario dinámicas atractivas para una excelente guía de Core Animation en vistas y capas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top