2010-09-06 14 views
5

मैं एक साधारण UIImageView पर एक स्पंदन एनीमेशन बनाना चाहता हूं। ImageView थोड़ा बड़ा हो जाएगा, फिर उसके मूल आकार पर वापस जाएं।पल्सिंग एनीमेशन

- (void) doCoolAnimation { 
    [UIView beginAnimations:@"glowingAnimation" context:nil]; 
    [UIView setAnimationRepeatAutoreverses:YES]; 
    [UIView setAnimationRepeatCount:INT_MAX]; 
    [UIView setAnimationDuration:0.25]; 
    [UIView setAnimationBeginsFromCurrentState:YES]; 
    imageView.transform = CGAffineTransformMakeScale(1.15, 1.15); 
    [UIView commitAnimations]; 
} 

यह iOS3 पर ठीक काम करता है लेकिन iOS4 पर केवल आंशिक रूप से काम करता है:

मैं निम्नलिखित कोड का इस्तेमाल किया।

मेरे पास 2 विचारों वाला एक UITabBarController है। पहले में एनीमेशन के साथ छवि दृश्य है, और जैसे ही दृश्य लोड होता है, एनीमेशन शुरू होता है। लेकिन जब मैं दूसरे दृश्य (टैबबार का उपयोग करके) पर वापस आ जाता हूं, तो एनीमेशन अब आईओएस 4 पर नहीं चल रहा है। (लेकिन iOS3 पर मैं इन 2 बार देखा गया और एनीमेशन के बीच स्विच कर सकते हैं अभी भी ठीक काम करता है।)

मैं भी एक टाइमर है कि doCoolAnimation कॉल हर दूसरे के साथ की कोशिश की है, लेकिन है कि एनीमेशन फिर से शुरू करने के लिए मदद नहीं करता है।

क्या कोई समझा सकता है कि एनीमेशन स्विच करने के बाद क्यों चला गया है? क्या कोई कामकाज है जो इसे आईओएस 4 पर काम कर सकता है?

उत्तर

9

का उपयोग करें: -

CABasicAnimation *pulseAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"]; 
pulseAnimation.duration = .5; 
pulseAnimation.toValue = [NSNumber numberWithFloat:1.1]; 
pulseAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 
pulseAnimation.autoreverses = YES; 
pulseAnimation.repeatCount = FLT_MAX; 
[ButtonName.layer addAnimation:pulseAnimation forKey:nil]; 
+0

यह वास्तव में अच्छा है! यह भी जांचने के लिए वैसे भी है कि कोई एनीमेशन पहले से चल रहा है या नहीं? – Mithuzz

1

व्यूडिडलोड केवल पहली बार लोड लोड कहा जाता है। चूंकि दृश्यों को स्विच करते समय तुरंत दृश्य को हटाया नहीं जाता है, क्योंकि इसमें अभी भी मौजूद है, जब आप दृश्य में वापस आते हैं तो viewdidLoad को फिर से नहीं कहा जाता है।

कॉल करने का प्रयास करें [self doCoolAnimation]; देखने में DidAppear। इसे हर बार कहा जाता है। इस सरल विधि

- (void)viewDidAppear:(BOOL)animated { 
    [self doCoolAnimation] 
}