2013-07-09 9 views
5

मेरे पास एक कस्टम सेल है जिसमें इसके अंदर एक सबव्यूव है जो प्रतिक्रिया मिलने के बाद सर्वर से सामग्री प्राप्त करने पर ऊंचाई में बढ़ जाती है।एनीमेशन के साथ एक ही समय में सेल ऊंचाई और सबव्यू ऊंचाई बढ़ाने के लिए कैसे?

इसलिए मैं एनीमेशन के साथ इस सबव्यू की ऊंचाई बढ़ाता हूं, और एनीमेशन के पूरा होने पर मैं नियंत्रक को देखने के लिए एक प्रतिनिधि संदेश भेजता हूं।

इस प्रतिनिधि में मैं सेल ऊंचाई के लिए नए मूल्य के साथ एक उदाहरण चर सेट और फोन

[tableView beginUpdates]; 
[tableView endUpdates]; 
जो सिर्फ चिकनी एनीमेशन के साथ नई ऊंचाई के साथ सेल का आकार बदलता है कि उसके बाद

। लेकिन चूंकि इस प्रतिनिधि विधि को पिछले एनीमेशन के समापन ब्लॉक में बुलाया जाता है, इसके बाद यह होता है।

क्या दोनों एक साथ आसानी से एक साथ होने का कोई तरीका है?

+0

क्या आपने सेल के संबंध में सबव्यूज को ऑटोरेज़राइज़ करने का प्रयास किया था? – satheeshwaran

+0

लेकिन मेरी समस्या यह है कि मैं केवल सेल की ऊंचाई की ऊंचाई को जानता हूं, सबव्यूव नई ऊंचाई पर बदलता है या आप मूल रूप से मुझे नई कॉल प्राप्त करने के लिए एक प्रतिनिधि कॉल के साथ सेल का आकार बदलने के लिए कह रहे हैं और सबव्यूज़ को सेटिंग के बजाय ऑटोरेसाइजिंग मास्क के साथ आकार देने दें खुद को एनीमेशन के साथ फ्रेम? हम्म ... मैंने यह कोशिश नहीं की, एक अच्छा विचार की तरह लगता है। –

उत्तर

0

आपको 1 एनीमेशन फ़ंक्शन में एनीमेशन बनाना चाहिए। आप नए ऊंचाई शुरू एनीमेशन प्राप्त कर लेते हैं (आप परतों परिवर्तन का उपयोग कर सकते हैं)

1

बस

1) एनीमेशन के बिना सीधे subview ऊंचाई बदलने के लिए,

2) heightForRowAtIndexPath में सेल के नए cellHeight निर्धारित करते हैं,

और

3) एनीमेशन के साथ तालिका अद्यतन करें। यदि ऐसा है, तो सबव्यू और सेल दोनों एनीमेशन सही ढंग से करेंगे।

1

NSLayoutConstraint का उपयोग करें .. इसलिए जब कोई सेल अपनी ऊंचाई और चौड़ाई को स्वचालित रूप से बदल देता है तो इसका सबव्यूव इसकी ऊंचाई और चौड़ाई भी बदल देगा।

NSLayoutConstraint *myConstraint1 = [NSLayoutConstraint constraintWithItem:cell 
            attribute:NSLayoutAttributeWidth 
            relatedBy:NSLayoutRelationEqual 
            toItem:subView 
            attribute:NSLayoutAttributeWidth 
            multiplier:1.0 
            constant:-5]; 

NSLayoutConstraint *myConstraint2 = [NSLayoutConstraint constraintWithItem:cell 
            attribute:NSLayoutAttributeHeight 
            relatedBy:NSLayoutRelationEqual 
            toItem:subView 
            attribute:NSLayoutAttributeHeight 
            multiplier:1.0 
            constant:-5]; 

[cell addConstraint:myConstraint1]; 
[cell addConstraint:myConstraint2]; 

आपकी आवश्यकता के अनुसार constant समायोजित करें।

आशा यह आप में मदद मिलेगी।

+0

क्या ये ऑटोलाउट बाधाएं हैं? मैं ऑटोलाउट्स का उपयोग नहीं कर रहा हूं। –

+1

नहीं ... NSLayoutConstraint सिर्फ दो बार देखा गया की विशेषताओं के बीच संबंध (ऊंचाई, चौड़ाई आदि) को परिभाषित करता है - http://developer.apple.com/library/ios/#documentation/AppKit/Reference/NSLayoutConstraint_Class /NSLayoutConstraint/NSLayoutConstraint.html –

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