2015-02-08 7 views
8

मेरा उद्देश्य पहला दृश्य नियंत्रक में चिकनी एनीमेशन शुरू करना और दूसरे दृश्य नियंत्रक में समाप्त होना है।कस्टम संक्रमण एनीमेशन एनीमेशन के बीच अज्ञात देरी कंट्रोलर फॉर प्रस्तुति नियंत्रक और एनिमेट ट्रांजिशन

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

मुझे अजीब समस्या है। मेरे वस्तु तरीकों

func animationControllerForPresentedController(presented: UIViewController, presentingController presenting: UIViewController, sourceController source: UIViewController) -> UIViewControllerAnimatedTransitioning? { 

    self.presenting = true 
    NSLog("start") 
    return self 
} 

func animateTransition(transitionContext: UIViewControllerContextTransitioning) { 
    if presenting { 
     NSLog("Animation Push") 
     transitionPush(transitionContext) 

    } 
    else { 
     NSLog("Animation Pop") 
     transitionPop(transitionContext) 

    } 
} 

मैं दो अलग-अलग करने के लिए दूसरे और दूसरे से पहले कुलपति के लिए सबसे पहले कुलपति से एनीमेशन के लिए तरीकों की है। जब मैं segue सक्रिय करता हूं तो मुझे animationControllerForPresentedController और animateTransition विधियों के बीच बहुत अजीब देरी होती है। कभी-कभी यह लगभग 1 सेकंड हो सकता है, और मेरा पूरा संक्रमण एनीमेशन 1 सेकंड होना चाहिए और यह अप्रत्याशित देरी बहुत बड़ी है।

2015-02-08 19:52:33.528 MyApp[1318:119598] start 
2015-02-08 19:52:33.979 MyApp[1318:119598] Animation Push 

मैं नहीं जानता कि क्यों इस देरी होती है और वहाँ अगर एक तरह से निकाल सकते हैं या कम करने के लिए: यहाँ एक लॉग है? मैंने यह जांचने की कोशिश की कि यह मेरा कोड हो सकता है, लेकिन मुझे इसका कोई प्रमाण नहीं मिला। अधिक जानकारी के लिए पूछने के लिए स्वतंत्र महसूस करें।

+0

आप इस का समाधान कर सके? एक ही मुद्दे में भी चल रहा है। – TWilly

+0

मैंने इस पोस्ट को आईओएस 8 बग पर चर्चा की। मैंने कुछ कामकाज की कोशिश की लेकिन अभी तक काम करने के लिए कुछ भी नहीं मिला है। http://gotoanswer.com/?q=Animation+not+always+visible+from+animateTransition+in+UIViewControllerAnimatedTransitioning – TWilly

+0

@TWilly अभी मैं इस समस्या को एक तरफ रखता हूं, लेकिन मैं जल्द ही इसके पास वापस आऊंगा। लेकिन अभी मेरे पास इसके बारे में कुछ विचार हैं। सबसे पहले मैंने संपादन खंड http://stackoverflow.com/a/25618714/1207902 में किसी अन्य विषय के लिए मेरे उत्तर में वर्णित किया है। मुझे यह भी लगता है कि यह मेरा मॉडल हो सकता है, जो डेटा को बहुत लंबा संसाधित करता है और इसके परिणामस्वरूप इस तरह की देरी होती है। वैसे भी, मैं इस समस्या पर वापस आऊंगा और जब मैंने किया, तो इसका उत्तर लिखने का प्रयास करें। लेकिन आप जो अंक निर्दिष्ट करते हैं उन्हें देख सकते हैं। –

उत्तर

4

मुझे एक ही समस्या थी। आप शायद मुख्य थ्रेड (presentViewController कॉल) से एनीमेशन ट्रिगर नहीं कर रहे हैं।

यह मैं हूँ (ऑब्जेक्टिव-सी कोड) के लिए समस्या हल हो जाती:

dispatch_async(dispatch_get_main_queue(), 
^{ 
    [self presentViewController:viewControllerToPresent 
        animated:YES 
       completion:nil]; 
}); 
+0

यह मेरे लिए काम नहीं किया। हो सकता है कि मुख्य धागा पहले से ही किसी कारण से अवरुद्ध हो गया है जो संक्रमण को होने से रोक रहा है? या बटन किसी भी तरह से निष्क्रिय है? – TWilly

+0

यह अजीब है - क्योंकि जब मैं कॉल करता हूं तो मुझे मुख्य धागा दिखाई देता है, लेकिन आपका कोड मुझे – sacred

+2

http://openradar.appspot.com/19563577 मदद करता है – sacred

1

मैं, चर्चा here में समाधान (वैकल्पिक हल) पाया लेखक - tamas.zahola

[self presentViewController:myViewController animated:YES completion:nil]; 
dispatch_async(dispatch_get_main_queue(), ^{}); // <--- this line 
संबंधित मुद्दे