मेरी भी यही समस्या है; एपीआई के पास कुछ विशिष्ट एनीमेशन को रद्द करने के लिए कुछ भी नहीं है।
+ (void)setAnimationsEnabled:(BOOL)enabled
सभी एनिमेशन अक्षम करता है, और इस तरह मेरे लिए काम नहीं करता है। दो समाधान हैं:
1) अपने एनिमेटेड ऑब्जेक्ट को एक सबव्यू बनाएं। फिर, जब आप उस दृश्य के एनिमेशन को रद्द करना चाहते हैं, तो दृश्य को हटा दें या इसे छिपा दें। बहुत सरल है, लेकिन अगर आपको इसे ध्यान में रखने की आवश्यकता है, तो आपको एनिमेशन के बिना सबव्यू को फिर से बनाना होगा।
2) केवल एक ही एनीमेशन को दोहराएं, और यदि आवश्यक हो तो एनीमेशन को पुनरारंभ करने के लिए एक प्रतिनिधि चयनकर्ता बनाएं:
-(void) startAnimation {
NSLog(@"startAnim alpha:%f", self.alpha);
[self setAlpha:1.0];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
[UIView setAnimationRepeatCount:1];
[UIView setAnimationRepeatAutoreverses:YES];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(pulseAnimationDidStop:finished:context:)];
[self setAlpha:0.1];
[UIView commitAnimations];
}
- (void)pulseAnimationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {
if(hasFocus) {
[self startAnimation];
} else {
self.alpha = 1.0;
}
}
-(void) setHasFocus:(BOOL)_hasFocus {
hasFocus = _hasFocus;
if(hasFocus) {
[self startAnimation];
}
}
2 के साथ समस्या) यह है कि एनिमेशन को रोकने में हमेशा देरी होती है क्योंकि यह वर्तमान एनीमेशन चक्र को पूरा करता है।
उम्मीद है की यह मदद करेगा।