dynamisch Größe die Höhe des tableView-Zellen

Ich bin in der Lage, die Anzeige den Inhalt der Zelle in der Tabelle und auch Wordwrap zur Anzeige der Nachricht ganz. Aber ich habe bemerkt, dass wenn der Inhalt mehr als die Höhe, als es wird clumpsy. Wie kann ich das erhöhen das erhöhen einer Zelle dynamisch, wenn der Inhalt zu groß ist. Da bin ich abrufen von Daten aus einer url, die Länge variiert, so will ich nicht zu hart codieren, die Höhe aber variiert werden sollen, ist es gemäß der Länge des Inhalts.

Den code, den ich bisher ausprobiert habe ist wie unter :

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSDictionary *person = [myPeople objectAtIndex:[indexPath row]]; 

    NSString *personName = [person valueForKey:@"text"];

    NSString *cellText    = personName;
    UIFont *cellFont      = [UIFont fontWithName:@"Helvetica-neuve" size:21.0];
    CGSize constraintSize = CGSizeMake(280.0f, MAXFLOAT);
    CGSize labelSize      = [cellText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];
    int buffer  = 70;
    return labelSize.height + buffer;
}

//Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"Cell";  

    UITableViewCell *cell = [commentView dequeueReusableCellWithIdentifier:CellIdentifier];  
    if (cell == nil) 
    {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
        cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
        cell.textLabel.numberOfLines = 6;
        cell.textLabel.font          = [UIFont fontWithName:@"Helvetica-neuve" size:21.0];
        [cell.textLabel setMinimumFontSize:13.0];
        [cell.textLabel setAdjustsFontSizeToFitWidth:NO];
    } 
    NSDictionary *person = [myPeople objectAtIndex:[indexPath row]]; 

    NSString *personName = [person valueForKey:@"text"];
    cell.textLabel.text = personName;
    return cell;
    }

InformationsquelleAutor iDev | 2011-11-06

Schreibe einen Kommentar