Animación de una vista de image para deslizarse hacia arriba

Estoy intentando hacer que una vista de image ( logo continuación) se deslice hacia arriba por 100 píxeles. Estoy usando este código, pero no sucede nada en absoluto:

 [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:3]; logo.center = CGPointMake(logo.center.x, logo.center.y - 100); [UIView commitAnimations]; 

Este código está en el método viewDidLoad . Específicamente, el logo.center = ... no funciona. Otras cosas (como cambiar el alfa) sí. ¿Quizás no estoy usando el código correcto para deslizarlo hacia arriba?

Para los storyboards / NIBs que no sean de autoajuste, su código está bien. Por cierto, ahora generalmente se recomienda animar el uso de bloques :

 [UIView animateWithDuration:3.0 animations:^{ self.logo.center = CGPointMake(self.logo.center.x, self.logo.center.y - 100.0); }]; 

O bien, si desea un poco más de control sobre las opciones y similares, puede usar:

 [UIView animateWithDuration:3.0 delay:0.0 options:UIViewAnimationCurveEaseInOut animations:^{ self.logo.center = CGPointMake(self.logo.center.x, self.logo.center.y - 100); } completion:nil]; 

Pero su código debería funcionar si no está utilizando la reproducción automática. Es solo que se prefiere la syntax anterior para iOS 4 y versiones posteriores.

Si está utilizando la function de reproducción automática, usted (a) crea una IBOutlet para su restricción de espacio vertical (ver a continuación), y luego (b) puede hacer algo como:

 - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; static BOOL logoAlreadyMoved = NO; // or have an instance variable if (!logoAlreadyMoved) { logoAlreadyMoved = YES; // set this first, in case this method is called again self.imageVerticalSpaceConstraint.constant -= 100.0; [UIView animateWithDuration:3.0 animations:^{ [self.view layoutIfNeeded]; }]; } } 

Para agregar un IBOutlet a una restricción, simplemente controle -drag desde la restricción a su .h en el editor asistente:

agregar IBOutlet para restricción vertical

Por cierto, si está animando una restricción, sea sensible a cualquier otra restricción que pueda haber vinculado a esa vista de image. A menudo, si coloca algo justo debajo de la image, tendrá su restricción vinculada a la image, por lo que puede tener que asegurarse de que no tiene ningún otro control con restricciones a su image (a less que quiera que se muevan también) .

Puede saber si está utilizando la reproducción automática abriendo su guión gráfico o NIB y luego seleccionando el "inspector de files" (la primera pestaña en el panel más a la derecha, o puede tirar de ella presionando la opción + command + 1 (el número " 1 ")):

autolayout en

Recuerde, si planea respaldar el pre-iOS 6, asegúrese de desactivar "autolayout". Autolayout es una function de iOS 6 y no funcionará en versiones anteriores de iOS.

tienes que probar

 logo.frame = CGRectMake(logo.frame.origin.x, logo.frame.origin.y - 100,logo.frame.size.width,logo.frame.size.height)