Stai apportando le modifiche all'interno del blocco Animazione principale?
Ho creato un'applicazione per iPhone basata su una vista semplice per verificarlo. La vista ha due arrotondati oggetti rect UIButton:
il primo pulsante è in alto a destra con larghezza 62 (altezza e 35) e il titolo iniziale "$ 0.99". È collegato all'uscita "pulsante" e all'azione "animato" nel controller della vista. Questo è il pulsante che verrà animato quando viene toccato.
Il secondo pulsante si trova nella parte inferiore dello schermo con il titolo "Reset" ed è collegato all'azione "reset" nel mio controller di visualizzazione.
Ecco il codice vista del regolatore:
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];
}
non crea l'effetto giusto per me. La larghezza viene impostata per prima, quindi il pulsante si sposta in seguito nella nuova posizione. In AppStore, la posizione dell'asse destro degli angoli retti rimane sempre nella loro posizione, * come * una scala e una traduzione allo stesso tempo. – erazorx
Il mio codice funziona come AppStore: il lato destro del pulsante non si sposta. Poiché stiamo apportando entrambe le modifiche (trasla a sinistra e aumenta la larghezza) a una copia del fotogramma e quindi modificando la cornice del pulsante all'interno del blocco di animazione, entrambe le modifiche devono essere animate contemporaneamente. – gerry3
Che funziona perfettamente amico mio. – iwasrobbed