2015-11-24 11 views
5

के बाद अद्यतन मैं स्वत: पंक्ति ऊंचाइयों और एक कस्टम UITableViewCell के साथ एक UITableView है। UITableViewCell के अंदर, मैं पहले प्रोग्रामेटिक ऑटोलायआउट बाधाओं के साथ कुछ UIButton एस जोड़ता हूं। वे पूरी तरह से तैनात हैं जैसा मैं चाहता हूं। फिर, 3 सेकंड (NSTimer) के बाद, मैं उन सभी UIButton एस को हटा देता हूं और फिर से उनमें से एक अलग संख्या फिर से जोड़ता हूं। (उदाहरण के लिए शुरू में मैं 4 UIButtons, 3 सेकंड के बाद, मैं उन 4 UIButton रों हटाने और 3 अलग अलग लोगों को जोड़ने हैUITableViewCell अंदर प्रोग्रामेटिक autolayout परिवर्तन केवल उन्मुखीकरण परिवर्तन

प्रारंभ में:।

Initially 3 के बाद सेकंड:

3 seconds later

पोस्ट बारी बारी से:

enter image description here

हो रहा क्यों है? मुझे कोई ऑटोलाउट चेतावनी नहीं दिखाई दे रही है। इसके अलावा, एक अभिविन्यास परिवर्तन के बाद, सब कुछ सही ढंग से स्थित है। क्या एक अभिविन्यास परिवर्तन की आवश्यकता है? मैं इस मैन्युअल रूप से बाध्य कर सकते हैं

पी एस (tableview बस के लिए यह करने के लिए बहुत ज्यादा लगता है, पुन: लोड): मैं setNeedsUpdateConstraints, layoutIfNeeded, layoutSubviews उपयोग करने की कोशिश, लेकिन कोई लाभ नहीं हुआ।

यहाँ UITableViewCell कोड है: http://pastebin.com/TcHUXgDU। (एक pastebin जोड़ी इस स्थान को दूषित नहीं करने के लिए) लेकिन मूल रूप से, वहाँ एक configure: विधि मैं अपने tableview उपवर्ग जो मैं अपने युक्त UITableView की cellForRowAtIndexPath में फोन के अंदर है कि है। यह विधि उन बाधाओं को जोड़ती है। इसके अलावा, टाइमर आग के बाद, एक ही कोड को (दूसरे फ़ंक्शन में) कहा जाता है, सिवाय इसके कि मेरे द्वारा जोड़े गए आइटमों की संख्या प्रारंभिक संख्या से अलग होती है।

यह मेरा UITableViewCell लेआउट है: (केवल ऊपर, नीचे, प्रमुख, अनुगामी बाधाओं UIView "Outerview" में जोड़ा गया है)

uitableviewcell layout

+0

की ऊंचाई आप कुछ कोड पोस्ट कर सकते हैं? और अभिविन्यास से पहले मैं देख सकता हूं कि सेल की ऊंचाई अलग-अलग है, जो बटन को पैडिंग पर निचोड़ कर रही है, जबकि अभिविन्यास परिवर्तन सेल की ऊंचाई को बदलकर ठीक करता है। –

+0

मैंने कुछ कोड पोस्ट किया है। इसके अलावा, अभिविन्यास से पहले, सेल ऊंचाई सभी 3 कोशिकाओं के लिए स्थिर है। (विपरीत बदलती आप की तरह कहते हैं) –

+0

आपके प्रश्न का उत्तर नहीं है, लेकिन आप एक बहुत अच्छे समय को प्रोग्राम के autolayout को लागू करता है, तो आप की तरह [चिनाई] एक पुस्तकालय का उपयोग करना होगा (https://github.com/SnapKit/Masonry) – sjwarner

उत्तर

0

आप UITableView को फिर से लोड की जरूरत है, इस को पुन: caculate सेल

+0

हां, यह यूटेबलव्यूसेल लेआउट हाइट्स के साथ एक पैनसिया की तरह है, लेकिन मैं सोच रहा था कि क्या यूटेबलव्यूसेल लेआउट में अपडेट को मजबूर करने का एक सस्ता तरीका है। –

+0

- (शून्य) reloadRowsAtIndexPaths: (NSArray *Nonnull) indexPaths withRowAnimation: (UITableViewRowAnimation) एनीमेशन। UITableView के दस्तावेज़ की जांच करें – yanyabo111

+0

सभी के बाद तालिकादृश्य को पुनः लोड करना समाप्त हुआ –

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