2009-11-05 18 views
7

Soy nuevo en la programación de cacao y iphone y quiero implementar una animación en UIButton. Por ejemplo, creo un UIButton personalizado con una imagen cuadrada. Luego, cuando presione ese UIButton, la imagen cuadrada se invertirá. Tenga en cuenta que la imagen cuadrada es la imagen del UIButton.Implementar animación en UIButton

[UIButton setImage:[UIImage imageNamed:@"square.png"]]; 

Respuesta

6

A continuación se muestra el código completo para pasar un botón (con imagen de fondo) cuando se presiona. Básicamente necesita dos botones y una vista de contenedor.

///// .H file code.... 


    //Container views used for flipping the bars to show whose turn it is 

    UIButton* btn1; 
    UIButton* btn2; 
UIView *BarContainerView; 

///// .M file code.... 

- (void)viewWillAppear:(BOOL)animated 
{ 

    BarContainerView = [[UIView alloc] initWithFrame:CGRectMake(20, 30, 103, 150)]; 

btn1 = [[UIButton buttonWithType:UIButtonTypeRoundedRect]retain]; 
[btn1 addTarget:self action:@selector(btn1_click) forControlEvents:UIControlEventTouchUpInside]; 
[btn1 setBackgroundImage:[UIImage imageNamed:@"image1.png"] forState:UIControlStateNormal]; 
btn1.frame = CGRectMake(0, 0, 103, 150); 

btn2 = [[UIButton buttonWithType:UIButtonTypeRoundedRect]retain]; 
[btn2 addTarget:self action:@selector(btn2_click) forControlEvents:UIControlEventTouchUpInside]; 
[btn2 setBackgroundImage:[UIImage imageNamed:@"image2.png"] forState:UIControlStateNormal]; 
btn2.frame = CGRectMake(0, 0, 103, 150); 

[BarContainerView addSubview:btn1]; 
[self.view addSubview:BarContainerView]; 
[self.view bringSubviewToFront:BarContainerView]; 

}

- (void) btn1_click 
{ 

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:0.75]; 
[UIView setAnimationDelegate:self]; 

[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:BarContainerView cache:YES]; 

[btn1 removeFromSuperview]; 
[BarContainerView addSubview:btn2]; 
[UIView commitAnimations]; 

} 

- (void) btn2_click 
{ 

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:0.75]; 
[UIView setAnimationDelegate:self]; 

[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:BarContainerView cache:YES]; 

[btn2 removeFromSuperview]; 
[BarContainerView addSubview:btn1]; 
[UIView commitAnimations]; 

} 
9

que tenían el mismo problema y lo resolvió de una manera muy similar. Acabo de subclasificar el UIButton e implementé un método como ese:

- (void) flipBackgroundImage:(UIImage*) image 
{ 
    [UIView beginAnimations:@"flipbutton" context:NULL]; 
    [UIView setAnimationDuration:0.4]; 
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self cache:YES]; 

    [self setBackgroundImage:image forState:UIControlStateNormal]; 

    [UIView commitAnimations]; 
} 

Funciona como un encanto.

Cheers, anka