मुझे एक समस्या थी जहाँ मेरे पास ओवरलैपिंग की एक श्रृंखला थी कैरमेशन / सीएएनिमेशन सीक्वेंस, जिनमें से सभी को कस्टम ऑपरेशन करने की आवश्यकता थी जब एनिमेशन बंद हो गए, लेकिन मुझे केवल एनीमेशनडाइपटॉप के लिए एक प्रतिनिधि हैंडलर चाहिए था।
हालाँकि, मुझे एक समस्या थी, एनीमेशनडायडटॉप प्रतिनिधि में प्रत्येक कैटरेन्स / CAAimimation को विशिष्ट रूप से पहचानने का एक तरीका प्रतीत नहीं हुआ।
मैंने CAAnimation के हिस्से के रूप में उजागर की गई कुंजी / मूल्य प्रणाली के माध्यम से इस समस्या को हल किया।
जब आप अपना एनीमेशन शुरू करते हैं, तो अपने पहचानकर्ता और मान सेट करने के लिए CATransition / CAAnimation पर setValue पद्धति का उपयोग करें जब एनीमेशनडायडटॉप फायर होता है:
-(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];
}
आपके एनिमेशनडीडटॉप प्रतिनिधि में:
- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag{
NSString* value = [theAnimation valueForKey:@"MyAnimationType"];
if ([value isEqualToString:@"Throb"])
{
//... Your code here ...
return;
}
if ([value isEqualToString:@"Special1"])
{
//... Your code here ...
return;
}
//Add any future keyed animation operations when the animations are stopped.
}
इसका दूसरा पहलू यह है कि यह आपको अपने प्रतिनिधि वर्ग में संग्रहीत करने के बजाय मुख्य मूल्य युग्मन प्रणाली में स्थिति रखने की अनुमति देता है। कम कोड, बेहतर।
मुख्य मूल्य जोड़ी कोडिंग पर Apple संदर्भ की जाँच करना सुनिश्चित करें ।
क्या एनिमेशनडायटॉप प्रतिनिधि में CAAimimation / CATransition पहचान के लिए बेहतर तकनीकें हैं?
धन्यवाद, - बातरग
CAAnimation
की delegate
है ताकि आप इसे स्थापित करने के लिए की आवश्यकता हो सकती, मजबूत है nil
चक्र को बनाए रखने से बचने के लिए!