2012-01-28 8 views
5

से शुरू हो रहा के पूरा कैसे पता लगा सकते हैं मैं जो मैं केवल बना सकते हैं और मेरे विचार नियंत्रक के मुख्य देखने का एक subview में जोड़ने के नियंत्रक के initWithNibName में एक CALayer है: और फिर, मैं निम्नलिखित एनीमेशन करते हैं:मैं एक एनीमेशन CATransaction

[CATransaction begin]; 
    [CATransaction setAnimationDuration:2]; 
    [logoLayer setOpacity:0]; 
    [CATransaction commit]; 

यह एनीमेशन कब किया जाता है मैं कैसे कह सकता हूं? प्रदर्शन चयनकर्ता: 2 सेकंड से देरी हुई। दृष्टिकोण इसके बारे में जाने का "सही तरीका" प्रतीत नहीं होता है।

उत्तर

22

doc के अनुसार, [CATransaction setCompletionBlock:] का उपयोग आप जो चाहते हैं उसके लिए किया जा सकता है।

इसे कहते हैं

पूरा होने के ब्लॉक वस्तु के रूप में सभी एनिमेशन बाद में इस लेन-देन समूह से जोड़ा पूरा कर लिया है की गारंटी है (मुख्य थ्रेड पर) के रूप में जल्द ही के नाम से जाना (या हटा दिया गया है।) कोई एनिमेशन हैं वर्तमान लेनदेन समूह प्रतिबद्ध होने से पहले जोड़े गए हैं (या समापन ब्लॉक एक अलग मूल्य पर सेट है,) ब्लॉक तुरंत लागू किया जाएगा।

एनीमेशन लेनदेन begin इससे पहले कुछ इस तरह जोड़ने का प्रयास करें।

[CATransaction setCompletionBlock:^{ 
    // Action after the animation completion 
}]; 
+5

उस दस्तावेज़ में ऑपरेटिव शब्द "बाद में" है। ऐसा मत सोचो (जैसा कि मैंने पहले किया था) पूरा होने वाला ब्लॉक पूरे लेनदेन पर लागू होता है। यह सिर्फ सेट के बाद लेनदेन में जोड़े गए एनिमेशन पर लागू होता है। –

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