Frage

In meiner app habe ich eine Tabellenansicht mit customViewCells. Ich subclassed die UITableViewCell Klasse und fügte ein Bild, das async geladen wird und für den Text, den ich verwende cell.textLabel.text = @"someThext".

Für die Zellen der Hintergrundfarbe wird alternativ [UIColor darkGrayColor] und [UIColor whiteColor].

Wenn ich die app im Simulator und am Telefon des textLabel der Zelle laufen hat den Hintergrund weiß. Ich will es klart sein, weil ich die Hintergrundfarbe der Zelle will nicht ein Streifen dann weiß dann ein weiterer Streifen voll sein.

In der init-Methode meiner benutzerdefinierten Zelle hat ich, in der Hoffnung, dass die weißen in rot, aber es hat keine Wirkung:

[self.textLabel setBackgroundColor:[UIColor redColor]];

Ich habe auch versucht:

self.textLabel.backgroundColor = [UIColor redColor];

Aber das auch nicht funktioniert ... wenn ich eine UILabel als Subview hinzufügen, die Hintergrundfarbe des Etiketts festgelegt werden kann, aber ich will nicht tun, weil, wenn ich das Telefon drehen Ich möchte Etiketten auto vergrössern.

Irgendwelche Ideen, warum die Hintergrundfarbe von cell.textLabel Einstellung nicht funktioniert?

Danke

War es hilfreich?

Lösung 2

Das Problem ist, dass UIKit die Zelle Hintergrundfarbe in der -setSelected Methode setzt. Ich hatte das Verfahren aber nicht über self.textLabel.backgroundColor = [UIColor Clear]; self.detailTextLabel.backgroundColor = [UIColor Clear]; darin so habe ich sie und das Problem in dem Bild erwähnt wurde behoben.

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    [super setSelected:selected animated:animated];
    self.textLabel.backgroundColor = [UIColor clearColor];
    self.detailTextLabel.backgroundColor = [UIColor clearColor];
}

Andere Tipps

Wenn Sie nicht wollen, um eine Unterklasse UITableViewCell Sie diese einfach hinzufügen:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
     [[cell textLabel] setBackgroundColor:[UIColor clearColor]];
     [[cell detailTextLabel] setBackgroundColor:[UIColor clearColor]];
}

Sieht aus wie Apple hier etwas verändert. Tun genau dies in iOS4 funktioniert:

self.textLabel.backgroundColor = [UIColor xxxColor];
self.detailTextLabel.backgroundColor = [UIColor xxxColor];

Mindestens bis zu dem Punkt, dass das Etikett Hintergrund transparent ist oder nimmt die Hintergrundfarbe. Immer noch nicht möglich, eine eigene Hintergrundfarbe eingestellt werden.

Schön, dass dieses Problem behoben ist, aber ein wenig überraschend während Tests, wenn Sie mit Base SDK 4.1 und min entwickeln. Einsatz 3.1 für iPhone classic und iPad.

Um eine klare Hintergrundfarbe Sie können Clear verwenden:

    [[cell textLabel] setBackgroundColor:[UIColor clearColor]];

Ist das, was Sie meinen?

finden Sie in diesem Beitrag: Wie stelle ich UITableViewCellSelectionStyle Immobilie einige benutzerdefinierte Farbe?

in Ihrem Fall verwendet nur eine UIView mit weißer Hintergrundfarbe

Ich habe es nicht ausprobiert, aber hier ist eine Vermutung ... Um schneller die opake Eigenschaft des Etiketts zu ziehen könnten standardmäßig auf true gesetzt werden.

Versuchen

cell.titleLabel.opaque = NO;
cell.titleLabel.backgroundColor = [UIColor clearColor];

Wenn das nicht funktioniert, entweder ich würde wahrscheinlich nur an dieser Stelle aufgeben und meine eigenen UILabel für die Zelle erstellen.

die Farbe des Textlabel setzen Sie dies tun sollten: t.textColor = [UIColor colorYouWantRGB];

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