2011-08-16 13 views
34

मैं CABasicAnimation के साथ अपनी छवि रोटेशन एनीमेशन के ऑटो दोहराव करने की कोशिश कर रहा हूं। मैंने वेब पर खोज करने की कोशिश की है कि इस तरह की संपत्ति कैसे सेट करें लेकिन उसे ढूंढने में असमर्थ था। क्या यह वास्तव में सीए एनीमेशन के लिए ऐसी कोई संपत्ति नहीं है? मुझे पता है कि आप संपत्ति को दोहराने के लिए कुछ विशाल मूल्य (here) सेट कर सकते हैं लेकिन हे, फिर UIView एनिमेट क्यों करता है WithDuration के पास एक विकल्प UIViewAnimationOptionRepeat है और इसके लिए मूल्य हार्डकोड किया गया है?CABasicAnimation HUGE_VALF के बिना असीमित दोहराना?

+0

ऊपर मान 'math.h' में,' 1e50' है। – bcattle

+0

एक्सकोड में कुछ की परिभाषा पर जाने के लिए क्लिक करें। आईओएस 7 और उसके बाद में – bcattle

उत्तर

101

नहीं, इस तरह से आपको the documentation के अनुसार ऐसा करना है।

HUGE_VALF को यह गुण को सेट एनीमेशन हमेशा के लिए दोहराने के लिए कारण होगा। स्विफ्ट के लिए


अद्यतन:

HUGE_VALF स्विफ्ट के संपर्क में नहीं है। हालांकि, this page से मेरी समझ यह है कि HUGE_VALF का उद्देश्य अनंत होना है (वास्तव में, INFINITY को HUGE_VALF के रूप में परिभाषित किया गया है)। के बाद से स्विफ्ट FloatingPointType प्रोटोकॉल एक static var infinity प्रदान करता है, तो आप बस लिख सकते हैं

myAnimation.repeatCount = .infinity 
+0

, यह कुछ अंतराल के बाद बंद हो जाता है। सुनिश्चित नहीं है कि कारण क्या है। स्विफ्ट में –

+0

'Float.infinity'। संदर्भित दस्तावेज़ों में 'HUGE_VALF' का उल्लेख है लेकिन यह नहीं बताता कि स्विफ्ट में कैसे व्यक्त किया जाए। –

4

तेज 3.0 के लिए और

   let rotationAnimation = CABasicAnimation(keyPath: "transform.rotation.z") 
      rotationAnimation.fromValue = 0 
      rotationAnimation.toValue = CGFloat.pi * 2 
      rotationAnimation.duration = 1 
      rotationAnimation.repeatCount = .infinity 
      holderView.btnRefresh.layer.add(rotationAnimation, forKey: "spinAnimation")