objective c - Animar una vista de imagen para deslizarse hacia arriba
objective-c ios (2)
hazlo intentar
logo.frame = CGRectMake(logo.frame.origin.x, logo.frame.origin.y - 100,logo.frame.size.width,logo.frame.size.height)
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 sintaxis 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:
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 colocas algo justo debajo de la imagen, tendrá su restricción vinculada a la imagen, por lo que debes asegurarte de que no tienes ningún otro control con restricciones para tu imagen (a menos que quieras 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 ")):
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.