2013-10-02 14 views
7

के बाद UINavigationBar परिवर्तन की ऊंचाई मैंने देखा है कि जब मैं एक Naviagtion नियंत्रक के लिए segue, फ्लिप एनीमेशन पूर्ण होने के बाद नेविगेशन बार थोड़ा ठीक कूदता है।मोडल फ्लिप एनीमेशन

यह केवल तब होता है जब मैं एक फ्लिप क्षैतिज segue का उपयोग करता हूं, और जब मैं डिफ़ॉल्ट स्लाइड अप एनीमेशन का उपयोग नहीं करता हूं।

यहाँ एक GIF मैं इस समस्या को वर्णन करने लगा रहे (छोटे आकार के बारे में खेद है!):

http://i.imgflip.com/3ym0y.gif

लें शीर्षक "मॉडल" के साथ नव बार के नोट - यह नोटिस एनीमेशन के बाद ~ 20 पिक्सेल नीचे कूदता है।

ऊपर दिया गया उदाहरण एक ताजा प्रोजेक्ट के साथ बनाया गया था - मैंने UINavigationController या UINavigationBar को उपclased नहीं किया है। यहाँ स्टोरीबोर्ड है, के मामले में यह मदद करता है:

http://i.imgur.com/qFlK2oB.jpg

मैं क्या याद आ रही है?

उत्तर

20

नियंत्रक में viewWillAppear को यह जोड़े आप रीति से प्रस्तुत कर रहे हैं:

- (void)viewWillAppear:(BOOL)animated 
{ 
    // Workaround #1 for jumpy navbar 
    [self.navigationController.navigationBar.layer removeAllAnimations]; 
} 

और जब (जैसा कि ऊपर एक ही नियंत्रक में इतना) नियंत्रक खारिज:

// Workaround #2 for jumpy navbar 
[UIView transitionWithView:self.navigationController.view 
        duration:0.75 
        options:UIViewAnimationOptionTransitionFlipFromLeft 
       animations:nil 
       completion:nil]; 
[self dismissViewControllerAnimated:YES completion:nil]; 

देखें https://stackoverflow.com/a/19265558/254603

+0

धन्यवाद दोस्त, यह चाल है! – Koonga

+0

क्या कोई यह सत्यापित कर सकता है कि डिफ़ॉल्ट फ्लिप एनीमेशन अवधि वास्तव में 0.75 है? ऐसा लगता है कि यह उस श्रेणी में 1.0 या कई मान भी हो सकता है। धन्यवाद! – James

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