2010-02-10 9 views
8

कैट्रानिशन काफी असामान्य है। निम्नलिखित कोड पर विचार करें।कैट्रानिशन कैसे काम करता है?

CATransition* trans=[CATransition animation]; 
trans.duration=0.5; 
trans.type=kCATransitionFade; 
[self.holdingView.layer addAnimation:trans forKey:nil]; 
self.loadingView.hidden=YES; 
self.displayView.hidden=NO; 

सूचना है कि कहीं नहीं किया था मैं संक्रमण कि मैं नहीं बल्कि loadingView से displayView प्रदर्शित करने के लिए करना चाहता था बताओ, इसलिए विचारों को किसी भी तरह के संक्रमण से खुद को प्रवेश करना होगा। क्या कोई और विस्तार से समझा सकता है कि यह कैसे काम करता है?

उत्तर

11

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

यह कोर एनीमेशन की एक प्रमुख विशेषता है। आपके ड्रॉ तर्क को आमतौर पर एनीमेशन से निपटने की आवश्यकता नहीं होती है। आपको एक ग्राफिक्स संदर्भ दिया गया है, आप इसमें आकर्षित करते हैं, आप कर चुके हैं। प्रणाली कंपोजिटिंग को संभालती है कि समय के साथ अन्य छवियों के साथ (या इसे अंतरिक्ष में घूर्णन करना, या जो भी हो)। तो छिपे हुए राज्य को बदलने के मामले में, प्रारंभिक-राज्य पूरी तरह से मिश्रित छवि अंतिम-राज्य कंपोस्टेड छवि के साथ मिश्रित है। एक जीपीयू पर बहुत तेज़, और इससे कोई फर्क नहीं पड़ता कि आपने दृश्य में क्या परिवर्तन किया है।

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