2014-06-27 10 views
5

मैंने एक संक्रमण समन्वयक के लिए स्विफ्ट में animateAlongSideTransition पर कॉल करने के लिए इतने सारे संयोजनों का प्रयास किया है। मुझे लगता है कि मैं कुछ बेवकूफ याद कर रहा हूँ।मैं स्विफ्ट में एनिमेट्स ट्रांजिशन को एनिमेट कैसे करूं?

यदि मैं यह (स्विफ्ट डॉक्स से) कॉल करना चाहते हैं:

func animateAlongsideTransition(_ animation: ((UIViewControllerTransitionCoordinatorContext!) -> Void)!, 
        completion completion: ((UIViewControllerTransitionCoordinatorContext!) -> Void)!) -> Bool 

मैं इसे कैसे करना होगा? मैं सिर्फ एनीमेशन ब्लॉक में कुछ चीजें पास करना चाहता हूं और पूर्णता ब्लॉक में कुछ भी नहीं करना चाहता हूं।

coordinator.animateAlongsideTransition({ context in 
     // do whatever with your context 
     context.viewControllerForKey(UITransitionContextFromViewControllerKey) 
    }, completion: nil) 

तुम भी मानकों को छोड़ सकते हैं अगर आप पहले अंतर्निहित पैरामीटर के लिए $0 की तरह चर का उपयोग और इतने

coordinator.animateAlongsideTransition({ 
     $0.viewControllerForKey(UITransitionContextFromViewControllerKey) 
    }, completion: nil) 

in वाक्य रचना आश्चर्य:

उत्तर

7

यह निश्चित रूप से आप क्या करना चाहते है पहले, लेकिन आपको इसे केवल एक बार सीखना है :)

  • घुंघराले कोष्ठक समारोह
  • आप in का उपयोग ब्लॉक शरीर
  • से पैरामीटर अलग करने के लिए अंदर ब्लॉक को परिभाषित करता है लेकिन जैसा कि मैंने ऊपर कहा, तुम $0, $1, $2 और इतने का उपयोग करके मानकों को छोड़ सकते हैं ...

ऐसा लगता है एक और अधिक वर्बोज़ वाक्य रचना नहीं है, लेकिन यह निश्चित रूप से नहीं स्विफ्ट भावना फिट बैठता है कि (और मैं भी वहाँ यह पोस्ट करने के लिए आलसी हूँ)

आशा है कि यह मदद करता है (और मैं कुछ भी भूल नहीं है .. ।)

संपादित करें:

एक और प्रोफ़ेशनल सलाह है जब ब्लॉक केवल पैरामीटर है, तो आप भी कोष्ठकों को छोड़ कर सकते हैं
(अगले काम नहीं करेगा, लेकिन यह विचार लगाने की है)

coordinator.animateAlongsideTransition{ 
     $0.viewControllerForKey(UITransitionContextFromViewControllerKey) 
    } 
2

आप इस तरह यह कर (कम से कम स्विफ्ट 1.2 में):

transitionCoordinator.animateAlongsideTransition({context in //things to animate, for example: view.alpha = 0.5 
}, completion: nil) 
संबंधित मुद्दे