2013-02-12 44 views
10

मैं वर्तमान में एक ऐप पर विकास कर रहा हूं, जो एक टेबलव्यू में कुछ ट्वीट दिखाता है। स्टोरीबोर्ड पर मैंने प्रोटोटाइप-सेल बनाया, जिसमें एक ट्वीट एंट्री की बुनियादी गुई अवधारणा शामिल है।आईओएस तालिका में टेक्स्ट ऊंचाई की गणना करें सेल देखें

यह इस तरह के लगभग दिखता है:

++++++++++++++ 
++Username++++ 
++++++++++++++ 
++Tweet+++++++ 
++++++++++++++ 
++Time-Ago++++ 
++++++++++++++ 

अब मैं निम्नलिखित कोड के साथ सेल की ऊंचाई की गणना कर रहा हूँ, लेकिन किसी भी तरह यह विफल रहता है।

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
    NSDictionary * currentTweet = [tweetArray objectAtIndex: indexPath.row]; 
    NSString * tweetTextString = [currentTweet objectForKey: @"text"]; 
    CGSize textSize = [tweetTextString sizeWithFont:[UIFont systemFontOfSize:15.0f] constrainedToSize:CGSizeMake(630, 1000) lineBreakMode: NSLineBreakByWordWrapping]; 

    float heightToAdd = 24 + textSize.height + 15 + 45; 
    if(heightToAdd < 90) { 
     heightToAdd = 90; 
    } 

    return heightToAdd; 
} 

वैसे, कुछ और है, जो अजीब है। यदि मैं टेबलव्यू स्क्रॉल करता हूं तो पूरा ऐप स्थिर हो जाता है। क्या यह सामान्य है या क्या मैं कुछ गलत कर रहा हूं?

+0

यह सामान्य @ ठंड नहीं है। बाहर से, मुझे एक भावना है, यह दो कारणों में से एक के कारण हो सकता है: 1) आप बहुत अधिक गणना कर रहे हैं जिसके कारण यह अग्रणी है। 2) स्वरूपित तरीके से टेक्स्ट प्रदर्शित करने के लिए, जाहिर है कि आप प्रत्येक पंक्ति के पाठ पर किसी प्रकार का एन्कोडिंग का उपयोग कर रहे हैं। –

+0

हैलो, आपकी टिप्पणी के लिए धन्यवाद। आप सही हे। मैंने सेकेंड पहले काउंटर को अपडेट करने के लिए हर सेकंड [tableView reloadData] को बुलाया। मैंने काउंटर हटा दिया और ठंड बंद कर दिया। मैं इसे सेलव्यू के अंदर करने की कोशिश कर रहा हूं। :) –

+0

यह अच्छा है। :) –

उत्तर

13

अपनी समस्या के लिए इस प्रयास करें:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 

    NSDictionary * currentTweet = [tweetArray objectAtIndex: indexPath.row]; 

    NSString * tweetTextString = [currentTweet objectForKey: @"text"]; 

    CGSize textSize = [tweetTextString sizeWithFont:[UIFont systemFontOfSize:15.0f] constrainedToSize:CGSizeMake(240, 20000) lineBreakMode: UILineBreakModeWordWrap]; //Assuming your width is 240 

    float heightToAdd = MIN(textSize.height, 100.0f); //Some fix height is returned if height is small or change it to MAX(textSize.height, 150.0f); // whatever best fits for you 

    return heightToAdd; 
} 

आशा है कि यह मदद करता है।

+0

'sizeWithFont' और' UILineBreakModeWordWrap' को बहिष्कृत किया गया है – aykutt