detailTextLabel Höhe setzen abhängig von Text

  • detailTextLabel Höhe setzen abhängig von Text

    Ich bin gerade dabei mir eine kleine Twitterapp zu basteln. Dabei lade ich Username + Tweet in eine UITableView.
    Da die Tweets unterschiedlich lang sind, muss ich die Höhe des detailTextLabel abhängig davon setzen.

    Bei den Zellen mache ich es so:

    Quellcode

    1. - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    2. NSString *tweet = [[self tweets] objectAtIndex:[indexPath row]];
    3. float height = [tweet sizeWithFont:[UIFont systemFontOfSize:14.0] constrainedToSize:CGSizeMake(300.0, CGFLOAT_MAX) lineBreakMode:UILineBreakModeWordWrap].height; // 300.0 = Breite einer Zelle
    4. return 26.0 + height; // 26.0 = Höhe der Zelle abzüglich Höhe detailTextLabel
    5. }


    Das sieht dann so aus (geladen ist die "Public Timeline"):

    osxentwicklerforum.de/index.php/Attachment/2993/

    Ich habe mir gedacht, obigen Code einfach auch auf das detailTextLabel anzuwenden, allerdings kann man die Eigenschaft frame wohl nicht einfach so ändern.
    Also muss ich wohl die numberOfLines setzen. Wie mache ich das in Abhängigkeit, manuell also einen Wert > 1 eingeben, funktioniert schonmal.
  • Also ich finde unterschiedlich hohe Tableviewcells total unübersichtlich. Ich würde sie alle gleich hoch machen, ein 2 zeiliges Label dort rein und dann wird am Ende des Textes halt u.U. "..." angezeigt. Aber ich kann an den beiden Zeilen schon erkennen ob mich das Ganze interessiert oder nicht. Tut es das, klicke ich halt auf die Zeile und erhalte das Detailview mit dem ganzen Text.

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Du must das Imageview selber machen da kommst du nicht drum herum. Dann kannst du den Contentmode auf Left stellen oder wenn es nichts ausmacht das es verzerrt wird halt auch auf Scale.

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Ich habe nun eine UITableViewCell Subclass, in der ich layoutSubviews überschrieben habe:

    Quellcode

    1. - (void)layoutSubviews {
    2. [super layoutSubviews];
    3. CGRect rect = [[self imageView] frame];
    4. rect.origin.x = 5.0;
    5. rect.origin.y = 5.0;
    6. [[self imageView] setFrame:rect];
    7. // Eigenschaft frame von textLabel und detailTextLabel setzen
    8. }


    Das Ergebnis: