2011-04-21 10 views
5

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

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

इस कोड को जो मैं अभी उपयोग कर रहा हूँ है:

//Function executes everything within when a certain row in tapped/selected 
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{  
    [self.tableView reloadData]; 
    [self stopLoading]; 
    if (selectedIndexPath == indexPath) 
    {   
     selectedIndexPath = nil; 
    } 
    else 
    {   
     selectedIndexPath = indexPath; 
    }   
    [self.tableView deselectRowAtIndexPath : indexPath animated : YES]; 
    [tableView beginUpdates]; 
    [tableView endUpdates]; 
} 

//Change heigth of the selected row 
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if ((selectedIndexPath != nil) && (selectedIndexPath.row == indexPath.row)) 
    { 
     labelSize = [[result2 objectAtIndex:indexPath.row] sizeWithFont:[UIFont fontWithName:@"Helvetica" size:13.0] 
                    constrainedToSize:CGSizeMake(220.0f, MAXFLOAT) 
                   lineBreakMode:UILineBreakModeWordWrap]; 
     return labelSize.height + 136; 

    } 
    return 68.0; 
} 

तो क्या मुझे पता है की जरूरत है। मैं सामग्री के आधार पर सेल की ऊंचाई की गणना कैसे कर सकता हूं? और न केवल पाठ।

कोई अच्छा होगा अगर कोई इससे मदद कर सके!

अग्रिम में Thnx

+0

असल में .. यह बहुत आसान था। बस heightForRowAtIndexPath में निम्नलिखित जोड़ने के लिए किया था NSString * वीडियो = [fbSource objectAtIndex: indexPath.row]; अगर (वीडियो! = @ "खाली") { वापसी लेबल आकार। हाइट + 136; } वापसी लेबल Size.height + 36; – Jos

+2

आपको इसे एक उत्तर के रूप में पोस्ट करना चाहिए और फिर इसे स्वीकार करना चाहिए, इसलिए यह प्रश्न अब अनुत्तरित के रूप में दिखाई नहीं देता है। – Anomie

+0

हाँ, यह अभी तक संभव नहीं था। मुझे 8 घंटे इंतजार करना पड़ा, लेकिन अब यह हुआ! – Jos

उत्तर

3

वास्तव में .. यह बहुत आसान था। बस ऊंचाई में निम्नलिखित को जोड़ना था ForRowAtIndexPath

NSString *video = [fbSource objectAtIndex:indexPath.row] ; 
    if (video != @"empty") { return labelSize.height + 136; } 
    return labelSize.height + 36; 
संबंधित मुद्दे