2013-02-27 52 views
35

मेरे पास CABasicAnimation है और देरी के बाद इसे शुरू करना चाहते हैं। UIKit में मैं देरी निर्दिष्ट कर सकता हूं। CAMediaTiming प्रोटोकॉल में timeOffset संपत्ति है लेकिन मुझे कोई प्रभाव दिखाई नहीं दे रहा है। मेरी अगली कोशिश जीसीडी का उपयोग करने में देरी है लेकिन यह ओवरकिल की तरह लगता है।CABasicAnimation में देरी कैसे करें?

+0

मैं सिर्फ GCD का प्रयोग करेंगे। 'dispatch_after (पॉपटाइम, dispatch_get_main_queue(),^(शून्य) { <# कोड विलंब के बाद मुख्य कतार पर निष्पादित किया जाना # #});' – BooRanger

+1

@BooRanger 'startTime' संपत्ति के साथ क्या गलत है? –

+0

[यह उत्तर] (http://stackoverflow.com/a/11625742/608157) को अपने प्रश्न का उत्तर देना चाहिए –

उत्तर

77

क्या आप [CAMediaTiming beginTime] संपत्ति (reference) का उपयोग नहीं करना चाहिए?

Core Animation Programming Guide में एक एनीमेशन के समय को अनुकूलित करना देखें।

CABasicAnimation *animation; 
animation.beginTime = CACurrentMediaTime() + 0.3; //0.3 seconds 
+70

बस याद रखें कि यह 'CACurrentMediaTime() + yourDelay' –

+1

है, मैं AVVideoCompositionCoreAnimationTool के लिए इसका उपयोग करने में सक्षम नहीं हूं। काम करने वाली एकमात्र चीज AVCoreAnimationBeginTimeAtZero है। मुझे मेरी एनीमेशन के लिए कुछ देरी चाहिए ... – Nil

+0

@grisleyB, वही समस्या मेरे सामने आ रही है। क्या आपको कुछ मिला ??? –

10

स्विफ्ट 3.0 में:

func animateYourView() { 
    let myDelay = 5.0 
    let scalePulseAnimation: CABasicAnimation = CABasicAnimation(keyPath: "transform.scale") 
    scalePulseAnimation.beginTime = CACurrentMediaTime() + myDelay 
    scalePulseAnimation.duration = 0.5 
    scalePulseAnimation.repeatCount = 2.0 
    scalePulseAnimation.autoreverses = true 
    scalePulseAnimation.fromValue = 1.0 
    scalePulseAnimation.toValue = 0.5 
    myView.layer.add(scalePulseAnimation, forKey: "scale") 
} 

कहाँ देरी के लिए कुंजी पंक्ति है:

scalePulseAnimation.beginTime = CACurrentMediaTime() + myDelay