KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I had a problem where I had a series of overlapping CATransition / CAAnimation sequences, all of which I needed to perform custom operations when the animations stopped, but I only wanted one delegate handler for animationDidStop. However, I had a problem, there didn't appear to be a way to uniquely identify each CATransition / CAAnimation in the animationDidStop delegate. I solved this problem via the key / value system exposed as part of CAAnimation. When you start your animation use the setValue method on the CATransition / CAAnimation to set your identifiers and values to use when animationDidStop fires: -(void)volumeControlFadeToOrange { CATransition* volumeControlAnimation = [CATransition animation]; [volumeControlAnimation setType:kCATransitionFade]; [volumeControlAnimation setSubtype:kCATransitionFromTop]; [volumeControlAnimation setDelegate:self]; [volumeControlLevel setBackgroundImage:[UIImage imageNamed:@"SpecialVolume1.png"] forState:UIControlStateNormal]; volumeControlLevel.enabled = true; [volumeControlAnimation setDuration:0.7]; [volumeControlAnimation setValue:@"Special1" forKey:@"MyAnimationType"]; [[volumeControlLevel layer] addAnimation:volumeControlAnimation forKey:nil]; } - (void)throbUp { doThrobUp = true; CATransition *animation = [CATransition animation]; [animation setType:kCATransitionFade]; [animation setSubtype:kCATransitionFromTop]; [animation setDelegate:self]; [hearingAidHalo setBackgroundImage:[UIImage imageNamed:@"m13_grayglow.png"] forState:UIControlStateNormal]; [animation setDuration:2.0]; [animation setValue:@"Throb" forKey:@"MyAnimationType"]; [[hearingAidHalo layer] addAnimation:animation forKey:nil]; } In your animationDidStop delegate: - (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag{ NSString* value = [theAnimation valueForKey:@"MyAnimation
Tags (comma-separated)
Save Edits
Cancel