Ich lerne Core Animation und probiere Beispielbeispiele aus.CATransaction Einstellung Animationsdauer funktioniert nicht
Wenn ich den folgenden Code verwenden, funktioniert die Animation Dauer
@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
Auf der anderen Seite, wenn ich das Animieren Methode Code am unteren Rand der Schaltfläche ViewDidLoad in einen Topf geworfen, so dass es ohne Drücken einer beliebigen Tasten geschieht, Die Animationsdauer wird nicht berücksichtigt. Ich sehe nur das Endergebnis ohne jede Animation.
Irgendwelche Gedanken?
Dank KMB
Dank Rob. Das hat funktioniert. Ich vermute, diese Klammern um Begin zu begehen sind optional. – Spectravideo328
Die Klammern sind optional. Ich mag es, den Code zwischen dem 'begin' und dem' commit' einzurücken, und die geschweiften Klammern lassen Xcode automatisch einrücken. –
Ich beziehe mich stark auf das referenzierte WWDC-Video - es ist eine ausgezeichnete Einführung in die vielen Fälle von CoreAnimation. – MaxGabriel