2009-11-03 16 views
6

Czy masz przykładowy kod dla animacji UIButton przycisku Cena AppStore -> Kup. Próbowałem dużo, ale nie działa dobrze z CAAnimationGroup (skala + tłumaczenie) i nie działa z ustawieniem go do nowego rozmiaru klatki w UAVIEW beginAnimations. Animacja najpierw ustawia nową szerokość (od razu), a następnie nowe pochodzenie .. więc nie jest to właściwy efekt ...Uibutton AppStore buy button animation

Dziękujemy!

Odpowiedz

5

Czy wprowadzasz zmiany w bloku Core Animation?

Stworzyłem prostą aplikację iPhone opartą na widoku, aby przetestować to. Widok posiada dwa zaokrąglone obiekty rect UIButton:

  1. Pierwszy przycisk jest w prawym górnym rogu (o szerokości 62 i wysokości 35) i wstępny tytuł „$ 0.99”. Jest podłączony do wyjścia "button" i "animacja" w kontrolerze widoku. To jest przycisk, który będzie animowany po dotknięciu.

  2. Drugi przycisk znajduje się u dołu ekranu z tytułem "Resetuj" i jest połączony z działaniem "resetowania" w moim sterowniku widoku.

Oto kod widok kontroler:

UIButtonAnimationTestViewController.h:

#import <UIKit/UIKit.h> 

@interface UIButtonAnimationTestViewController : UIViewController { 
    IBOutlet UIButton *button; 
    CGRect originalFrame; 
} 

- (IBAction)animate; 
- (IBAction)reset; 

@end 

UIButtonAnimationTestViewController.m:

#import "UIButtonAnimationTestViewController.h" 

@implementation UIButtonAnimationTestViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    originalFrame = button.frame; 
} 

- (IBAction)animate { 
    CGRect frame = button.frame; 
    frame.origin.x -= 30; 
    frame.size.width += 30; 

    [UIView beginAnimations:@"button" context:nil]; 
    button.frame = frame; 
    [button setTitle:@"" forState:UIControlStateNormal]; 
    [UIView setAnimationDelegate:self]; 
    [UIView commitAnimations]; 
} 

- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context { 
    [button setTitle:@"BUY NOW" forState:UIControlStateNormal]; 
} 

- (IBAction)reset { 
    button.frame = originalFrame; 
    [button setTitle:@"$0.99" forState:UIControlStateNormal]; 
} 
+0

to nie tworzy odpowiedniego efektu dla mnie. Szerokość jest ustawiana jako pierwsza, a następnie przycisk przesuwa się do nowej pozycji. W AppStore prawo-X-pozycja prawego narożnika zawsze pozostaje na swoim miejscu, * jak * - skalowanie i tłumaczenie w tym samym czasie. – erazorx

+0

Mój kod działa jak AppStore: prawa strona przycisku nie porusza się. Ponieważ wprowadzamy obie zmiany (translate left i increase width) do kopii ramki, a następnie zmieniając ramkę przycisku wewnątrz bloku animacji, obie zmiany muszą być animowane w tym samym czasie. – gerry3

+0

To działa bezbłędnie, mój przyjacielu. – iwasrobbed