Frage

Ich mag ein UITableView zu schaffen, mit Zeilenhöhen variieren, und ich versuche, dies zu tun durch UILabels innerhalb des UITableViewCells zu schaffen.

Hier ist mein Code so weit:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *MyIdentifier = @"EntryCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease];
    }

    UILabel *textView = [[UILabel alloc] initWithFrame:CGRectMake(10, 0, 300, 40)];
    textView.numberOfLines = 0;
    textView.text = [entries objectAtIndex:[indexPath row]];
    [cell.contentView addSubview:textView];
    [textView release];

    return cell;
}

Das gibt mir 2 Zeilen Text pro Zelle. Jedoch kann jeder „Eintrag“ eine unterschiedliche Anzahl von Zeilen hat, und ich möchte die UITableViewCells automatisch auf die Größe, Text wie nötig Verpackung, ohne die Schriftgröße zu ändern.

[textView sizeToFit] und / oder [cell sizeToFit] scheint nicht zu arbeiten.

Hier ist, wie ich möchte, dass die UITableView aussehen:

----------------
Lorem ipsum
----------------
Lorem ipsum
Lorem ipsum
----------------
Lorem ipsum
Lorem ipsum
Lorem ipsum
----------------
Lorem ipsum
----------------
Lorem ipsum
Lorem ipsum
----------------

Wer weiß, wie diese richtig zu machen?

Danke.

War es hilfreich?

Lösung

Die UITableViewDelegate definiert eine optionale Methode heightForRowAtIndexPath, die Ihnen den Einstieg erhalten. Sie müssen dann sizeWithFont verwenden.

Es gibt einige Diskussionen über Ihr genaues Problem hier:

http: // www.v2ex.com/2008/09/18/how-to-make-uitableviewcell-have-variable-height/

Text Schlichte wurde auch in dieses Thema diskutiert

Andere Tipps

Dieser Code funktioniert für mich. Weiß nicht, ob es perfekt ist, aber funktioniert.

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

    if(indexPath.row<[notesModel numberOfNotes]){
        NSString *cellText = [@"Your text..."];
        UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:12.0];
        CGSize constraintSize = CGSizeMake([UIScreen mainScreen].bounds.size.width - 100, MAXFLOAT);
        CGSize labelSize = [cellText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];

        return labelSize.height + 20;
    }
    else {
        return 20;
    }
}

textView.numberOfLines = 2? NumberOfLines setzt maximale nuber von Linien so vielleicht 2 für u OWRK werden?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top