/ / iPhone - Ako animovať tlačidlo po stlačení? - iphone, animácia, gombík

iPhone - Ako animovať tlačidlo po stlačení? - iphone, animácia, gombík

Existuje spôsob, ako vytvoriť vlastnú animáciu, keďkliknete na tlačidlo iPhone? Chcel by som niečo ako tlačidlo App Store - zobrazuje cenu, a keď na ňu kliknete, zmení farbu a zmení sa text, ktorý sa má kúpiť, a potom, keď naň znova kliknete, dokončí nákup.

UIViewAnimationTransition obsahuje iba niekoľko hodnôt, ktoré neposkytujú úplnú funkčnosť. Je možné urobiť niečo podobné, ale s animáciou:

- (IBAction) changeButtonDisplay:(id)sender {

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.8];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:purchaseButton cache:NO]; //the built in UIViewAnimationTransition values don"t provide enough flexibility

[purchaseButton setTitle:@"Buy Now" forState:UIControlStateNormal];
[purchaseButton setBackgroundColor:[UIColor greenColor]];
[purchaseButton addTarget:self action:@selector(purchaseItems:) forControlEvents:UIControlEventTouchUpInside];

[UIView commitAnimations];

}

Tento kód funguje a zobrazí správny kódprechod a umožniť druhé kliknutie urobiť správnu akciu, ale názov a farba sa okamžite zmení, nie v plynulej animácii. Je možné takúto animáciu urobiť ľahko, musím vytvoriť podtriedu UIButton a animáciu vykonať „ručne“? Ak áno, akú metódu by som musel prepísať?

odpovede:

4 pre odpoveď č. 1

Skôr než len zmeniť názov a cieľ,atď., majú dve samostatné tlačidlá, ktoré vykonávajú každú akciu a vyzerajú inak. Potom, keď stlačíte tlačidlo, zavolajte metódu, ktorá odstráni aktuálne tlačidlo z jeho super zobrazenia a pridá nové tlačidlo do zobrazenia na jeho miesto. Zabalte to do nejakého bloku animácie UIView a mali by ste si svoju animáciu získať.

Aby to fungovalo, musíte tiež nastaviťprechod animácie pri kontrole tlačidla. Mohlo by byť preto užitočné mať „zobrazenie kontajnera“ podľa toho, čo môže byť, a potom vám pridať ďalšie tlačidlá ako jeho podobrazy.

Pseudo kód môže vyzerať asi takto:

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.8];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:buttonConteinerView cache:NO]; //the built in UIViewAnimationTransition values don"t provide enough flexibility

[purchaseButton retain];
[purchaseButton removeFromSuperView];

[buttonContainerView addSubview:secondPurchaseButton];

[UIView commitAnimations];

3 pre odpoveď č. 2

Štandardné UIView urobí, čo chcete. UIView's backgroundColor je animovateľná vlastnosť.

Vytvoril by som vlastné „tlačidlo“ pomocou podtriedy UIView ALEBO prípadne podtriedy UIButton a pridával som do nich podskupiny. (poznámka: UIButtony boli v tomto bode bolesťou v 2.2, nie v 3.0)

Pre každý stav textu potrebujete UILabel:

UILabel *textForStateOne;
UILabel *textForStateTwo;

A môžete zmeniť farbu pozadia rodičovského zobrazenia.

Takže vo svojej novej triede tlačidiel urobíte metódu:

 -(void)toggleState{

myState = !myState;

if(myState){

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.8];

[textForStateOne setAlpha:1.0]
[textForStateTwo setAlpha:0.0]

[self setBackgroundColor:[UIColor greenColor]];

[UIView commitAnimations];


} else{

//do the opposite here

}




}

0 pre odpoveď č. 3
UIView *btnView4=button;
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:btnView4 cache:YES];
[UIView commitAnimations];``