Uczę się Core Animation i wypróbowuję przykładowe przykłady.Czas trwania animacji w formacie CATransaction nie działa
Kiedy użyć następującego kodu, czas trwania animacji działa
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
//Modifying base layer
self.view.layer.backgroundColor = [UIColor orangeColor].CGColor;
self.view.layer.cornerRadius = 20.0;
self.view.layer.frame = CGRectInset(self.view.layer.frame, 20, 20);
//Adding layer
mylayer=[CALayer layer]; //mylayer declared in .h file
mylayer.bounds=CGRectMake(0, 0, 100, 100);
mylayer.position=CGPointMake(100, 100); //In parent coordinate
mylayer.backgroundColor=[UIColor redColor].CGColor;
mylayer.contents=(id) [UIImage imageNamed:@"glasses"].CGImage;
[self.view.layer addSublayer:mylayer];
}
- (IBAction)Animate //Simple UIButton
{
[CATransaction begin];
// change the animation duration to 2 seconds
[CATransaction setValue:[NSNumber numberWithFloat:2.0f] forKey:kCATransactionAnimationDuration];
mylayer.position=CGPointMake(200.0,200.0);
mylayer.zPosition=50.0;
mylayer.opacity=0.5;
[CATransaction commit];
}
@end
Z drugiej strony, jeśli wrzuciłam kod metody Animacja na dole przycisk viewDidLoad tak, że dzieje się bez naciskania przycisków, czas trwania animacji nie jest przestrzegany. Po prostu widzę końcowy rezultat bez żadnej animacji.
Jakieś myśli?
Dzięki KMB
Dzięki Rob. To się udało. Zgaduję, że te nawiasy wokół zaczynają się angażować, są opcjonalne. – Spectravideo328
Klamry są opcjonalne. Lubię wcięcia kodu między 'begin' i' commit', a nawiasy klamrowe powodują, że Xcode automatycznie je wcina. –
Mocno zastępuję wideo WWDC, które stanowi doskonałe wprowadzenie do wielu gier CoreAnimation. – MaxGabriel