2011-09-25 16 views
7

एक ऐसी विधि है जिसे किसी तृतीय पक्ष API द्वारा एनीमेशन ब्लॉक के अंदर बुलाया जाता है। उस विधि में मुझे कुछ सबव्यूव्यू बनाना है। लेकिन इस मामले में मैं उपन्यासों का निर्माण करते समय एनीमेशन नहीं करना चाहता हूं।UIView एनीमेशन ब्लॉक में नेस्टेड कोड के लिए एनीमेशन कैसे अक्षम करें?

क्या कहने का कोई तरीका है "[UIView dontAnimateFromHere] ... [UIView अबYouMayAnimateAgain]"?

उत्तर

18

हां वास्तव में, ऐसा कोई तरीका है। यह इस तरह है:

[UIView setAnimationsEnabled:NO]; 
// Animations happen here 
[UIView setAnimationsEnabled:YES]; 

... इस को निष्क्रिय कर देगा दोनों UIView एनिमेशन ब्लॉक और एनिमेशन के माध्यम से शुरू हो रहा ट्रिगर वर्ष शुरू/अंत तरीकों का उपयोग कर।

यह कहा गया है कि, मुझे लगता है कि आपकी तीसरी पार्टी लाइब्रेरी प्री-संकलित है अन्यथा आप सीधे स्रोत को संशोधित कर सकते हैं: यह निश्चित रूप से संभव है कि यह कुछ अजीब और एनिमेटिंग कर रहा है, इसलिए आपका समाधान इस समाधान के साथ भिन्न हो सकता है ।

यह एनीमेशन ब्लॉक में किए गए परिवर्तनों को अक्षम नहीं करेगा: वे तुरंत सरल हो जाएंगे। अन्यथा आपको बुरी चीजें होने का खतरा होगा क्योंकि आपकी तीसरी पार्टी एपीआई इस विचार के बारे में धारण कर रही है कि विचार कहां सही हो सकते हैं।

3

आईओएस 7 के लिए और बाद में, यह UIView का +performWithoutAnimation: है।

ध्यान दें कि performWithoutAnimation एनीमेशन ब्लॉक के भीतर एक परिवर्तन को तुरंत निष्पादित करने के लिए उपयोगी है, लेकिन यह नेस्टेड ब्लॉक में किए गए एनीमेशन कॉल को अक्षम नहीं करेगा, इसलिए सुविधा के लिए इसका उपयोग करें, लेकिन यह setAnimationsEnabled के रूप में मजबूत नहीं है मूल जवाब।

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