Änderung der Grenzen der Bildansicht von UITableViewCell
Ich versuche, stellen verschiedene Größe der Bilder in der Bildansicht UITableViewCell. Ich bekomme den Bild-Daten asynchron'ly, erstellen Sie das Bild, den Inhalt im Modus der Bildansicht und endlich Grenzen setzen der Bildansicht. Aber der code scheint unempfindlich zu, alle änderungen die ich gemacht habe. Ich möchte die Bilder werden zentriert in einem 75x75 Bereich. Ich schrieb den code unten für diesen Zweck
UIImage* image = [UIImage imageWithData:data];
[holder.imageView setContentMode:UIViewContentModeCenter || UIViewContentModeRedraw];
[holder.imageView setImage:image];
[holder.imageView setBounds:CGRectMake(0,0,75,75)];
[holder.imageView setFrame:CGRectMake(0,0,75,75)];
[holder setNeedsLayout];
Wo die Halter die UITableViewCell. Das Ergebnis bekomme ich immer die gleiche. Alle Bilder haben 75px Höhe und unterschiedliche breiten. Kann mir jemand helfen, dieses problem lösen?
Habe ich gemerkt, dass die Festlegung von contentMode und bounds-Eigenschaften keine Wirkung in diesem code. Ich habe ein NSLog nach der letzten Zeile und habe die Ergebnisse wie folgt:
NSLog(@"imageview:%@ bounds and contentMode:%@ %@",[holder imageView],[holder.imageView bounds],[holder.imageView contentMode]);
Bildansicht:<UIImageView: 0x39ab8a0;
frame = (0 0; 75 75); opaque = NO;
userInteractionEnabled = NEIN; layer =
<CALayer: 0x39a92b0>> Grenzen und
contentMode:(null) (null)
Immer noch keine Lösung
InformationsquelleAutor Behlül | 2010-06-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Getan, habe ich endlich die Lösung gefunden, es kostete mich 3 Stunden aber =)
Die Lösung ist das ändern von Eigenschaften wie gebunden,Rahmen,contentMode in -(void)layoutSubviews Methode der custom UITableViewCell Klasse. Der "trick" ist, zu schreiben-layout-code in dieser Methode, da sonst der code keine Wirkung.
Code unten hat die Arbeit für mich. Es macht die Zeilen der Tabelle vertikal ausgerichtet.
Ich muss Zustimmen, dass dies eine massive Verschwendung von Zeit, um diese wie erwartet funktionieren.
Während dies funktioniert, es ist immer noch ein hack. Man würde erwarten, dass die frame/bounds ausgearbeitet werden, von den Beschränkungen in der custom UITableViewCell.
Perfekt. Arbeitete in der ersten GEHEN. Dank buddy.
InformationsquelleAutor Behlül
Also das problem mit UITableViewCell's ist, dass Sie keine Kontrolle über die Größe des built-in-Objekte (nämlich Bildansicht, contentView, accessoryView, backgroundView). Wenn Sie die Tabelle ändern, werden Ihre Anpassungen erhalten mit Füßen getreten.
Können Sie, wie Behlul wies darauf hin, zwingen, die Größen Stimmen mit layoutSubviews, aber das problem ist, dass layoutSubviews wird jedesmal aufgerufen, wenn die Tabelle scrollt. Das ist eine Menge von unnötigen re-layout aufruft.
Alternative, Methode ist das hinzufügen von alle Ihre Inhalte in der contentView. Ebenso, wenn Sie customizing-hintergrund, können Sie eine transparente backgroundView und fügen Sie Ihre benutzerdefinierten hintergrund-Ansicht (zB myBackgroundView) als Untersicht backgroundView.
Diese Weise können Sie den Ort und die Größe Ihrer Elemente, wie Sie wollen.
Der Seite nach unten ist die Aktie Nachrichten nicht mehr empfangen aus dem Zubehör-oder Bild-Ansichten. Sie müssen nur zu erstellen, die Sie besitzen.
Hoffe, das hilft!
Dieses getan der trick für mich.
InformationsquelleAutor Brooks
"UIViewContentModeCenter || UIViewContentModeRedraw" ist äquivalent zu 1. Es ist auch nicht ein Bitfeld. Sie möchten UIViewContentModeCenter.
UITableViewCell.Bildansicht wird verwaltet durch die Zelle. Wenn Sie möchten, benutzerdefinierte layout, versuchen Sie, ein Blick auf contentView (ich vermute, was du meinst mit "zentriert in einem 75x75-Bereich"):
InformationsquelleAutor tc.
versuchen Sie, die "contentMode" - Eigenschaft der Bildansicht zu 'UIViewContentModeScaleAspectFit' oder 'UIViewContentModeScaleAspectFill'
InformationsquelleAutor Sanniv
Erstellen Unterklasse von UITableViewCell:
InformationsquelleAutor Harshal Wani