2014-04-12 14 views
9

मैं ट्यूटोरियलऑटो लेआउट बाधा परिवर्तन

http://weblog.invasivecode.com/post/42362079291/auto-layout-and-core-animation-auto-layout-was

से एनिमेशन के साथ ऑटो लेआउट तैयार कर रही थी और चीजों को सही काम कर रहे थे चेतन नहीं है।

जब मैं अपने आवेदन में इस अवधारणा का उपयोग करने, नीचे शीर्ष पर से एक सेटिंग स्क्रीन (एक UIView) चेतन करने की कोशिश कर की कोशिश की, यह बहुत अच्छा काम करता है, जब सेटिंग स्क्रीन सिर्फ एक खाली UIView है

लेकिन मामले में मैं इस सेटिंग स्क्रीन के लिए एक सबव्यूव के रूप में एक UILabel जोड़ता हूं, एनीमेशन बस गायब हो जाता है। इस UILabel को सेटिंग स्क्रीन पर हटाने पर, एनीमेशन दिखाई देता है।

यहाँ आउटलेट है कि मैं

__weak IBOutlet UIView *settingsView; 
__weak IBOutlet NSLayoutConstraint *settingsBottomConstraint; 
__weak IBOutlet NSLayoutConstraint *settingsViewHeightConstraint; 

देखें कनेक्ट किया है, था लोड सेटअप विधि (setupViews)

-(void)setupViews 
{ 
    settingsBottomConstraint.constant = - settingsViewHeightConstraint.constant; 
    [settingsView setNeedsUpdateConstraints]; 
    [settingsView layoutIfNeeded]; 
    isSettingsHidden = YES; 
} 

छिपाएँ/सामने लाएँ विधि

- (IBAction)showSettingsScreen:(id)sender { 

    if (isSettingsHidden) { 

     settingsBottomConstraint.constant = 0; 
     [settingsView setNeedsUpdateConstraints]; 
     [UIView animateWithDuration:.3 animations:^{ 
      [settingsView layoutIfNeeded]; 
     }]; 
    } 
    else{ 

     settingsBottomConstraint.constant = - settingsViewHeightConstraint.constant; 
     [settingsView setNeedsUpdateConstraints]; 
     [UIView animateWithDuration:0.3 animations:^{ 
      [settingsView layoutIfNeeded]; 
     }]; 

    } 
    isSettingsHidden = !isSettingsHidden; 
} 

मेरी समस्या इससे समान लगता है कर रहे हैं Issue with UIView Auto Layout Animation

+0

आपके UILabel पर बाधाएं क्या हैं? –

+0

@ इफ्तेखर, मैंने दोनों विकल्पों की कोशिश की थी। 1. बस UIView (यानी कोई बाधाओं के साथ) को लाइट छोड़कर और 2. चौड़ाई, ऊंचाई, पर्यवेक्षण के लिए शीर्ष स्थान और पर्यवेक्षण की ओर अग्रसर होने के लिए बाधाओं को जोड़ना। कोई काम नहीं किया। – BangOperator

उत्तर

32

मुझे जवाब मिला।

बजाय

,

[settingsView layoutIfNeeded]; 

इस लाइन बना यह आकर्षण की तरह काम किया,

[self.view layoutIfNeeded]; 

मैं हम जनक दृश्य सिर्फ दृश्य हम चेतन की कोशिश कर रहे पर layoutIfNeeded विधि को करने के लिए की जरूरत है लगता है ।

अद्यतन: रूप codyko द्वारा एक टिप्पणी में कहा, इस iOS 7, IOS 10 लिए आवश्यक है। आईओएस 8 के लिए यह समस्या मौजूद नहीं है।

+4

ध्यान दें कि [सेटिंग्स दृश्य लेआउट IfNeeded] आईओएस 8 में काम करता है, लेकिन आईओएस 7 में नहीं। आईओएस 7 में आपको इसके बजाय [self.view layoutIfNeeded] को कॉल करने की आवश्यकता है, लेकिन यदि आप केवल आईओएस 8 में काम कर रहे हैं, तो आपको पूरे दृश्य के लिए बाधाओं को अपडेट करने की आवश्यकता नहीं है। – codyko

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