2012-04-15 13 views
5

का उपयोग करके लूप, रिवर्सिबल एनीमेशन मेरे आईओएस 5 ऐप में मेरे पास एक कस्टम UIButton है जिसमें इसकी छवि के रूप में लाल कक्ष है। जब बटन टैप किया जाता है तो मैं ओर्ब को लाल और हरे रंग के बीच पल्सिंग/फीडिंग शुरू करना चाहता हूं। मैं दोनों लाल और हरे रंग छवियों और सफलतापूर्वक निम्नलिखित कोड का उपयोग कर दोनों के बीच पार disolve कर सकते हैं:कोर एनीमेशन

CABasicAnimation *imageSwitchAnimation = [CABasicAnimation animationWithKeyPath:@"contents"];  
imageSwitchAnimation.fromValue = (id)[UIImage imageNamed:@"red.png"].CGImage; 
imageSwitchAnimation.toValue = (id)[UIImage imageNamed:@"green.png"].CGImage; 
imageSwitchAnimation.duration = 1.5f;   
[self.button.imageView.layer addAnimation:imageSwitchAnimation forKey:@"animateContents"]; 

हालांकि, मैं एनीमेशन चाहते हैं हमेशा के लिए (ठीक है, जब तक मैं यह बताना बंद करने के लिए) है और यह भी जारी रखने के लिए एनीमेशन के लिए रिवर्स और लूप के लिए। दूसरे शब्दों में, लाल फीका -> हरा -> लाल और फिर दोहराना।

मैंने एनीमेशन ब्लॉक को एक अंतहीन पाश में डालने की कोशिश की (कुछ तर्क के साथ यह तय करने के लिए कि क्या फीडिंग लाल -> हरा या हरा -> लाल से जाना चाहिए) लेकिन यह सिर्फ पूरे ऐप को लॉक कर देता है।

अन्य समाधान कोकोस 2 डी का उपयोग करने लगते हैं, जो काफी भारी वजन लगता है क्योंकि यह ऐप में एकमात्र एनीमेशन है (इसलिए मैं पूरी तरह से आवश्यक होने तक ऐसे ढांचे का उपयोग नहीं करना चाहता)।

किसी भी मदद की सराहना की जाएगी।

उत्तर

23

हां, आप यह कर सकते हैं, ठीक CABasicAnimation के भीतर। चाल यह है कि इसकी कई सबसे महत्वपूर्ण विधियां CABasicAnimation Class Reference, या यहां तक ​​कि इसके सुपरक्लास में भी नहीं हैं। CABasicAnimation CAMediaTiming नामक एक प्रोटोकॉल लागू करता है। CAMediaTiming Protocol Reference देखें।

आप विशेष रूप से दो गुणों के बारे में जानना चाहते हैं: autoreverses और repeatCount। दोनों आत्म-व्याख्यात्मक हैं, लेकिन यदि आप अनंत दोहराना चाहते हैं तो क्या होगा? repeatCount के लिए प्रविष्टि से:

अंशकालिक हो सकता है। यदि repeatCount 0 है, तो इसे अनदेखा किया जाता है। 0 पर डिफ़ॉल्ट। यदि दोहराना अवधि और दोहराना गणना निर्दिष्ट है तो व्यवहार अपरिभाषित है।

इस संपत्ति को HUGE_VALF पर सेट करने से एनीमेशन हमेशा के लिए दोहराने का कारण बन जाएगा।

क्या आप इसे वहां से बाहर कर सकते हैं?

+0

बहुत बहुत धन्यवाद - यह पूरी तरह से काम करता है! बहुत स्पष्ट रूप से समझाया :) – Skoota

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^