2009-11-05 17 views
7

Jestem nowy w programowaniu kakao i iphone i chcę zaimplementować animację w UIButton. Na przykład tworzę niestandardowy UIButton z kwadratowym obrazem. Następnie, gdy naciśnie ten Uibutton, kwadratowy obraz zostanie odwrócony. Zwróć uwagę, że kwadratowy obraz jest obrazem UIButtonu.Implementacja animacji w UIButtonie

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

Odpowiedz

6

Poniżej znajduje się pełny kod przerzucania przycisku (z obrazem tła) po naciśnięciu. Zasadniczo potrzebujesz dwóch przycisków i widoku kontenera.

///// .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

miałem ten sam problem i rozwiązać go w bardzo podobny sposób. Właśnie podklasowałem UIButton i zaimplementowałem taką metodę:

- (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]; 
} 

Działa jak urok.

Pozdrowienia, anka