2013-02-08 52 views
6

यह दृश्य चेतन करने के लिए आसान काफी है बढ़ रहा है:फीका में और एक UIView बाहर फीका, जबकि यह

[UIView animateWithDuration:1.0 
        animations:^{theView.center = newCenter; theView.alpha = 0;} 
        completion:^(BOOL finished){ 
         [theView removeFromSuperview]; 
        }]; 

समस्या यह है कि जब मैं एक subview के रूप में जोड़ने, मैं इसे में फीका और पहले से ही देखना चाहते है जैसे यह चल रहा है। अभी यह तुरंत प्रकट होता है, फिर चलता है और बाहर निकलता है।

तो, मुझे इसे प्रारंभिक अल्फा शून्य पर सेट करने की आवश्यकता है, इसे चलते समय इसे जल्दी से फीका करें, फिर इसे फीका करें। क्या यह UIView एनिमेशन के साथ संभव है? मेरे पास एक ही ऑब्जेक्ट पर काम कर रहे दो प्रतिस्पर्धी एनीमेशन ब्लॉक नहीं हो सकते हैं?

+0

मैं आप निम्नलिखित नहीं कर रहा हूँ दिखाई देगा: आपका कोड सामान्य "स्लाइड और फीका आउट" उदाहरण है। लेकिन फिर आप "जब मैं इसे सबव्यूव के रूप में जोड़ता हूं" के बारे में बात करता हूं। क्या आप इसे जोड़ रहे हैं? या इसे हटा रहा है? लेकिन, आपके प्रश्न के उत्तर में, आपको एकाधिक एनीमेशन ब्लॉक की आवश्यकता नहीं है। यह सिर्फ एक सवाल है कि आप क्या करने की कोशिश कर रहे हैं। – Rob

+0

यहां बहुत अच्छे एनीमेशन उत्तरों के साथ एक समान पोस्ट है: http://stackoverflow.com/questions/5040494/objective-c-ios-development-animations-autoreverse – escrafford

उत्तर

12

आपको बस 2 एनिमेशन बैक-टू-बैक लागू करना है। कुछ इस तरह ::

theView.alpha = 0; 
[UIView animateWithDuration:1.0 
       animations:^{ 
        theView.center = midCenter; 
        theView.alpha = 1; 
       } 
       completion:^(BOOL finished){ 
        [UIView animateWithDuration:1.0 
             animations:^{ 
              theView.center = endCenter; 
              theView.alpha = 0; 
             } 
             completion:^(BOOL finished){ 
              [theView removeFromSuperview]; 
             }]; 
       }]; 
1 में

तो दूसरा यह चलते हुए और फिर अगले दूसरे में यह

आशा बाहर फीका इस मदद करता होगा

+0

यह काम करना चाहिए, भले ही इसे गणना करने के लिए अतिरिक्त केंद्र बिंदु की आवश्यकता हो। मैं आंदोलन के लिए एक CABasicAnimation और अल्फा के लिए एक UIView एनीमेशन का उपयोग कर समाप्त हो गया। – soleil

2

प्रारंभिक अल्फा = 0 एनीमेशन ब्लॉक के बाहर रखें।

theView.alpha = 0; 
[UIView animateWithDuration:1.0 
       animations:^{ 
        theView.center = newCenter; 
        theView.alpha = 1; 
       } 
       completion:^(BOOL finished){ 
        // Do other things 
       }]; 
+1

यह फीका करने के लिए काम करता है लेकिन मुझे नहीं पता कि यह क्यों फीका बाहर काम नहीं करता है। – Envil