2014-06-21 6 views
35

दस्तावेज़ों के अनुसार, हमेशा के लिए CABasicAnimation दोहराने का तरीका है repeatCountHUGE_VALF पर सेट करना।स्विफ्ट (HUGE_VALF) में हमेशा के लिए एनीमेशन दोहराने के लिए कैसे?

लेकिन स्विफ्ट में, HUGE_VALF संकलन त्रुटि का कारण बनता है। स्विफ्ट मानक पुस्तकालय (या जहां भी यह स्थिर रहता है) के बारे में नहीं लगता है।

अब मैं क्या करूँ?

उत्तर

79

repeatCount से Float.infinity पर सेट करें। यह संकलित करता है और काम करता है।

सभी संभावनाओं में, HUGE_VALF किसी भी मामले में विरासत मूल्य था।

फिर भी, यह आश्चर्य की बात है कि स्विफ्ट द्वारा इन संख्यात्मक निरंतर नाम नहीं देखे जाते हैं। मैंने ब्रिजिंग हेडर में <stdlib.h> आयात करने का प्रयास किया लेकिन इससे मदद नहीं मिली।


लेकिन कृपया मार्टिन आर का जवाब देखें। जब से मैंने अपना जवाब पोस्ट किया, तब से ऐप्पल ने अपना पसंदीदा उत्तर स्पष्ट रूप से बताया है: .greatestFiniteMagnitude का उपयोग करें। यह लगभग .infinity जैसा ही है लेकिन काफी नहीं!

+2

अच्छा खोज। मेरा मानना ​​है कि आपका मतलब क्यू एंड ए दोनों में 'repeatCount' था? –

+1

मेरा मतलब यह नहीं था कि, मेरा अर्थ वास्तव में 'HUGE_VALF' को 'दोहराना अवधि' सेट कर रहा था। लेकिन मैं शायद _should_ मतलब है कि! मैं समायोजित करूंगा। – matt

+0

'HUGE_VALF' को' 'में परिभाषित किया गया है। लेकिन यह फ़ाइल भी ब्रिजिंग हेडर फ़ाइल में जोड़ दी गई है, * यह * स्थिरता स्विफ्ट के संपर्क में नहीं है। –

0

मैं "विशाल" मान का उपयोग करता हूं। यह एक build_in readonly var है;

1

CAMediaTiming राज्यों के repeatCount संपत्ति के लिए वर्तमान प्रलेखन:

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

और वह समस्याओं के बिना संकलित:

let ba = CABasicAnimation() 
ba.repeatCount = .greatestFiniteMagnitude 

कारण यह है कि HUGE_VALF स्विफ्ट में आयात नहीं कर रहा है कि यह <math.h> में एक "गैर तुच्छ" मैक्रो के रूप में परिभाषित किया जाता है:

# define HUGE_VALF __builtin_huge_valf() 
संबंधित मुद्दे