मुझे कुछ समस्याएं हैं जो UITableView में गतिशील पंक्ति ऊंचाइयों को लागू करती हैं - लेकिन यह उन कक्षों में नहीं है जिनके साथ मुझे समस्या है, यह सेल के अंदर UILabel है।UILabel में UITableViewCell के साथ गतिशील ऊंचाई
सेल में टेक्स्ट प्रदर्शित करने के लिए केवल एक UILabel शामिल है। मेरी तालिका दृश्य: heightForRowAtIndexPath: एनएसएसटींग के आकार WithFont: विधि का उपयोग कर उस लेबल की ऊंचाई की गणना करके प्रत्येक सेल का सही ढंग से आकार बदल रहा है।
मेरे पास UITableViewCell का उप-वर्ग है जो केवल यूआईएलएबल संपत्ति रखता है जो स्टोरीबोर्ड में लगा हुआ है। स्टोरीबोर्ड में मैंने अपनी लाइनों को 0 पर सेट कर दिया है, इसलिए यह जितनी लाइनों की आवश्यकता है उतनी लाइनों का उपयोग करेगा, और मैंने वर्ड रैप में अपनी लाइन ब्रेक सेट की है।
यहाँ है कि कैसे मैं कोशिकाओं सेट कर रहा हूं:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
ExpandCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
SomeObject *object = self.tableObjects[index.row];
cell.myLabel.text = [object cellText];
[cell.myLabel sizeToFit];
return cell;
}
जब मैं इस का निर्माण, मैं सेल की सभी अपनी सामग्री के लिए सही ऊंचाई के लिए आकार के साथ मेरी तालिका दृश्य मिलता है, लेकिन लेबल सभी कर रहे हैं 1 लाइन जो सिर्फ कोशिकाओं के पक्ष से बाहर चलाती है। हालांकि, अगर मैं टेबल को स्क्रॉल करता हूं तो सेल स्क्रीन को छोड़ देता है, और फिर उन्हें वापस स्क्रॉल करता है, उनके लेबल को सही ढंग से आकार दिया जाएगा और सेल देखेगा कि मैंने शुरुआत में इसकी अपेक्षा कैसे की थी।
मैंने उसी विधि के साथ लेबल फ्रेम की गणना करने का भी प्रयास किया है, जिसमें मैं पंक्ति ऊंचाई की गणना कर रहा हूं, और मुझे वही व्यवहार मिलता है - यह स्क्रीन से स्क्रॉल होने तक और फिर से ठीक से तब तक सही नहीं होता है।
मुझे इसके आसपास काम करने के दो तरीके मिल गए हैं, और न ही स्वीकार्य समाधान हैं।
सबसे पहले, यदि देखने में डीडएपियर: मैं अपने टेबलव्यू पर पुनः लोडडेटा कहता हूं, तो कोशिकाएं और लेबल पहली बार सही ढंग से आकर्षित होते हैं। यह मेरी स्थिति के लिए काम नहीं करेगा क्योंकि मैं इस तालिका में सेल्स को जोड़ और निकाल दूंगा, और जब भी कोई सेल जोड़ा जाता है तो मैं पुनः लोडडेटा को कॉल नहीं करना चाहता हूं।
दूसरा कामकाज मेरे लिए बहुत अजीब लगता है - अगर मैं यूआईएलएबल पर डिफ़ॉल्ट सिस्टम फ़ॉन्ट 17 पर फ़ॉन्ट सेटिंग्स छोड़ देता हूं, तो कोशिकाएं स्वयं को सही ढंग से आकर्षित करती हैं। जैसे ही मैं फ़ॉन्ट आकार बदलता हूं, यह स्क्रीन को तब तक सही ढंग से ड्रॉइंग नहीं करने के अपने व्यवहार में बदल जाता है जब तक वह स्क्रीन छोड़ देता है और वापस आ जाता है, या फिर से लोड हो जाता है डेटा तालिका पर कॉल किया जाता है।
मैं इस के साथ किसी भी मदद की सराहना करता हूं।
इस पोस्ट में सही ढंग से अपनी समस्या का जवाब देता है: http://stackoverflow.com/questions/8903369/dynamic- UITableViewCell-ऊंचाई। यदि आप पहले कभी गतिशील रूप से आकार वाले कोशिकाओं को नहीं बनाते हैं, तो यह थोड़ा मुश्किल हो सकता है, लेकिन यह बहुत मुश्किल नहीं है। – macandyp
मुझे समझ में नहीं आता कि उस उत्तर में कोड जो कुछ भी कर रहा है उससे अलग कुछ भी कर रहा है। मैं अपने लेबल के फ्रेम को cellForRowAtIndexPath में सेट कर रहा हूं, लेकिन अगली बार इसे फिर से खींचा जाने तक वह फ्रेम लागू नहीं कर रहा है। या क्या मैं कुछ न कुछ भूल रहा हूं? – alivingston
क्या आप ऊंचाई ForRowAtIndexPath लागू कर रहे हैं? – macandyp