iphone - framework - uikit ios
animaciĆ³n addSubview (5)
Tengo UIView principal donde visualizo diferentes datos. Luego coloco un botón, que muestra una subvista como esta:
- (IBAction) buttonClicked:(id)sender
{
UIView *newView = [[UIView alloc] initWithFrame:CGRectMake(25,25,50,20)];
UILabel *newLabel = [[UILabel alloc] initWithFrame:CGRectMake(25,25,50,25)];
newLabel.text = @"some text";
[newView addSubview:newLabel];
[self.view addSubview:newView];
[newLabel release];
[newView release];
}
newView parece estar bien, pero no se anima de ninguna manera, simplemente aparece de inmediato. ¿Cómo puedo agregar algún tipo de animación cuando aparece newView? Como hacer zoom o deslizarse hacia abajo o algo así. ¿Hay algún código simple?
Descubrí que incluso con los bloques y opciones de animación, intentar animar addSubview
solo no me haría nada. Encontré una solución que consiste en establecer el alfa de la subvista en 0.0, agregar la subvista y luego animar la configuración del alfa de 0.0 a 1.0. Esto me da el efecto de desvanecimiento que estaba buscando.
Espero que esto ayude a alguien más.
UIView *redView = [[UIView alloc] initWithFrame:CGRectMake(20, 20, 100, 100)];
redView.backgroundColor = [UIColor redColor];
redView.alpha = 0.0;
[self.view addSubview:redView];
[UIView animateWithDuration:0.5 animations:^{
redView.alpha = 1.0;
}];
Hagamos esto a la ligera.
var redView = UIView(frame:CGRectMake(20,20,100,100))
redView.backgroundColor = UIColor.redColor
redView.alpha = 0.0
view.addSubview(redView)
UIView.animateWithDuration(0.25) { () -> Void in
redView.alpha = 1.0
}
Agregar una subvista no se puede animar simplemente colocándola en un bloque animateWithDuration. Y no puede ser animado usando oculto.
Hola, podrías usar las animaciones de UIView:
[newView setFrame:CGRectMake( 0.0f, 480.0f, 320.0f, 480.0f)]; //notice this is OFF screen!
[UIView beginAnimations:@"animateTableView" context:nil];
[UIView setAnimationDuration:0.4];
[newView setFrame:CGRectMake( 0.0f, 0.0f, 320.0f, 480.0f)]; //notice this is ON screen!
[UIView commitAnimations];
El SDK ahora lo resolverá y animará la vista de las posiciones que le asignó. Esto funciona para la mayoría de las propiedades de UIViews: alfa, escala, límites, marcos, etc.
También hay compilación en animaciones como flip and curl:
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight
forView:newView
cache:YES];
[self.navigationController.view addSubview:settingsView.view];
[UIView commitAnimations];
Espero que esto te ayude a empezar :)
enlace contra el marco QuarzCore
#import <QuartzCore/QuartzCore.h>
CATransition *transition = [CATransition animation];
transition.duration = 1.0;
transition.type = kCATransitionPush; //choose your animation
[newView.layer addAnimation:transition forKey:nil];
[self.view addSubview:newView];
este es para uso recomendado:
[UIView transitionWithView:containerView duration:0.5
options:UIViewAnimationOptionTransitionCurlUp //change to whatever animation you like
animations:^ { [containerView addSubview:subview]; }
completion:nil];