2016-11-14 7 views
8

मेरे पास एक स्क्रीन है। ऐसा लगता है कि नीचेस्टोरीबोर्ड से प्रोग्राम किए गए बाधाओं को प्रोग्रामेटिक रूप से कैसे बदला जाए?

enter image description here

अब जब उपयोगकर्ता क्लिक किया मैं एक खाता और पासवर्ड (बटन) ऐसा लगता है कि नीचे

enter image description here

मैं तदनुसार मैं दोनों दृश्यों को स्थानांतरित करना चाहते हैं प्रदर्शित करेगा है प्रदर्शित करेगा स्टोरीबोर्ड का उपयोग करके अतिरिक्त बाधाएं.अब प्रोग्रामिंग से बाधाओं को बदलने की जरूरत है ..

+2

बस उस बाधा का एक आउटलेट बनाएं जिसे आप बदलना चाहते हैं जैसे आप UIButton या UILabel के आउटलेट बनाते हैं। –

उत्तर

18

आपको अपनी बाधा का आईबीओलेट बनाना होगा।
enter image description here

तो फिर तुम कोड में अपने बाधा के लगातार मान सेट:

labelWidthConstraint.constant = newValue 

यदि आप चाहते हैं यह एनिमेटेड आप कुछ इस तरह कर सकते हैं:

स्विफ्ट

labelWidthConstraint.constant = newValue 
UIView.animate(withDuration: 0.3, animations: { 
    view.layoutIfNeeded() 
} 

उद्देश्य-सी

self.labelWidthConstraint.constant = newValue; 
[UIView animateWithDuration:0.3 animations:^{   
    [self.view layoutIfNeeded]; 
}]; 
+1

आपको 'layoutSubviews()' (दस्तावेज़ देखें) को कॉल नहीं करना चाहिए। इसके बजाय 'layoutIfNeeded()' का उपयोग करें। – clemens

+0

क्या आप इस कोड को उद्देश्य सी में परिवर्तित कर सकते हैं? –

+0

निलम पाड़ी, मैंने एक उद्देश्य-सी उदाहरण रखने के लिए उत्तर अद्यतन किया। –

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