Animar una vista de imagen para deslizarse hacia arriba

Estoy intentando hacer que una vista de imagen ( logo continuación) se desplace hacia arriba en 100 píxeles. Estoy usando este código, pero nada sucede 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 está funcionando. Otras cosas (como cambiar el alfa) lo hacen. Tal vez no estoy usando el código correcto para deslizarlo hacia arriba?

Para storyboards / NIB no autodesplazados, su código está bien. Por cierto, ahora generalmente se recomienda animar usando 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 tu código debería funcionar si no estás usando el autolayout. Es solo que la syntax anterior es preferida para iOS 4 y posterior.

Si usa el diseño automático, (a) crea un 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 una IBOutlet para 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 imagen. A menudo, si coloca algo justo debajo de la imagen, tendrá su restricción vinculada a la imagen, por lo que debe asegurarse de no tener ningún otro control con restricciones a su imagen (a menos que desee que se muevan también) .

Puede ver si está usando el diseño automático abriendo su storyboard o NIB y luego seleccionando el “inspector de archivos” (la primera pestaña en el panel de la derecha o puede levantarlo presionando la opción + comando + 1 (el número) 1 “)):

autolayout en

Recuerde, si planea respaldar pre-iOS 6, asegúrese de desactivar “autolayout”. Autolayout es una función de iOS 6 y no funcionará en versiones anteriores de iOS.

hazlo intentar

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