2009-06-17 15 views
68

Ich versuche, die Hintergrundfarbe von UITableViewCell auf transparent zu setzen. Aber nichts scheint zu funktionieren. Ich habe einige Bilder/Knöpfe innerhalb der tableViewCell und ich möchte den weißen Hintergrund grouptableview verschwinden lassen, um einen 'sich hin- und herbewegenden' Effekt für die Bilder und die Knöpfe zu erhalten (als ob sie nicht innerhalb der tableview waren).So erstellen Sie eine UITableViewCell mit einem transparenten Hintergrund

Irgendeine Idee, wie dies erreicht werden könnte?

Antwort

120

Wenn beide die anderen Optionen nicht versuchen, funktionieren diese

UIView *backView = [[[UIView alloc] initWithFrame:CGRectZero] autorelease]; 
backView.backgroundColor = [UIColor clearColor]; 
cell.backgroundView = backView; 
+14

myTable.backgroundColor = [UIColor clearColor]; hat für mich gearbeitet! Danke – sjobe

+7

Das funktionierte auch für mich, obwohl ich zusätzlich verwenden musste: cell.backgroundColor = [UIColor clearColor]; –

+4

Ich musste auch cell.textLabel.backgroundColor = [UIColor clearColor] verwenden! – Casebash

30

Beginnen Sie mit diesen Artikeln die Hintergrundfarbe richtig eingestellt zu bekommen:

http://howtomakeiphoneapps.com/2009/03/how-to-add-a-nice-background-image-to-your-grouped-table-view/

http://pessoal.org/blog/2009/02/25/customizing-the-background-border-colors-of-a-uitableview/

Dann werden alle die folgenden Zeilen versuchen:

[[cell contentView] setBackgroundColor:[UIColor clearColor]]; 
[[cell backgroundView] setBackgroundColor:[UIColor clearColor]]; 
[cell setBackgroundColor:[UIColor clearColor]]; 

Es ist mehr als nur ein Ansicht, die sich in einer UITableViewCell versteckt. Dies sollte alle auf Ihrem Weg klar machen.

+0

funktioniert perfekt deaktivieren ... bis auf einen Tippfehler: setBbackgroundColor => setBackgroundColor –

+1

cell.contentView's backgroundColor schien der wahre Schlüssel für mich zu sein. (Bestätigt nur auf iOS7) – bitwit

+0

Sie sind fantastisch. +100 wenn ich könnte – Katushai

2

hatte ich ein Problem, wo mein Gewohnheit tableviewcell background mit einem weißen Etikett Hintergrund überlagert wurde, habe ich versucht, alles und schließlich Einstellung Hintergrundfarbe löschen in der viewWillAppear hat es geschafft.

 - (void)viewWillAppear:(BOOL)animated 
    { 
[super viewWillAppear:animated]; 
    self.tableView.backgroundColor = [UIColor clearColor]; // if this is not here, cell background image is covered with a white rectangle :S 
    } 

und in der rowForCellAtIndexPath stelle ich das Hintergrundbild:

if(!cell) { 
    cell = [[[UITableViewCell alloc] initWithFrame: ... 
    UIImageView *cellBG = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"cellbg.jpg"]]; 
    [cell setBackgroundView:cellBG]; 
    [cellBG release]; 
} 
40

Dies wird in der Dokumentation von UITableViewCell tatsächlich beantwortet. Während Sie die Transparenz Ihrer Steuerelemente einrichten müssen, muss die tatsächliche Zellenhintergrundfarbe wie folgt festgelegt werden:.

„Hinweis: Wenn Sie die Hintergrundfarbe einer Zelle (durch Einstellen der Hintergrundfarbe einer Zelle über die Backgroundcolor Eigenschaft von UIView erklärt) ändern möchten Sie es in der Tableview tun muss: willDisplayCell: forRowAtIndexPath: Verfahren des Delegaten und nicht in tableView: cellForRowAtIndexPath: der Datenquelle Änderungen an den Hintergrundfarben von Zellen in einer Gruppenstil-Tabellenansicht wirken sich in iOS 3.0 anders aus als frühere Versionen des Betriebssystems Bereich innerhalb des abgerundeten Rechtecks ​​statt der Bereich außerhalb von ihm. "

https://developer.apple.com/documentation/uikit/uitableviewcell

+0

gesetzt werden Sie haben mein Leben gerettet. Dies ist die einzige Lösung, die wirklich funktioniert. –

+1

Wenn es einen Oscar für Coder geben würde, würden Sie jetzt einen Oscar haben! – Sjakelien

11

der Hintergrund Ihrer UITableViewCell standardmäßig ist weiß. Doing myCell.backgroundColor = [UIColor clearColor]; macht Ihre UITableViewCell transparent, aber Sie werden nicht den Unterschied fühlen, weil die UITableView (der Inhalt Ihrer UITableViewCell) auch standardmäßig einen weißen Hintergrund haben.

Wenn wollen Sie Ihre UIView Hintergrund sehen Sie Ihr Handy und Ihre Tabelle Hintergrund transparent machen müssen:

myTableView.backgroundColor = [UIColor clearColor]; 
myTableCell.backgroundColor = [UIColor clearColor]; 

Martin Magakian

25
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

    cell.backgroundColor = [UIColor clearColor]; 
    cell.backgroundView.backgroundColor = [UIColor clearColor]; 
} 
+1

Wenn Ihre Tabellenansicht eine Hintergrundfarbe hat und Sie möchten, dass Ihre Zelle transparent ist, damit Sie die Hintergrundfarbe Ihrer Tabellenansicht sehen können, ist dies die richtige Lösung. –

+0

Wie ist das nicht die einzige Antwort. Klappt wunderbar. –

17

Ich habe eine einfache Lösung

Objective-c Version:

cell.backgroundColor = [UIColor clearColor]; 

Swift Version:

cell.backgroundColor = UIColor.clearColor() 
+0

aber setzen Sie es immer innerhalb - (void) tableView: (UITableView *) tableView willDisplayCell: (UITableViewCell *) Zelle forRowAtIndexPath: (NSIndexPath *) indexPath –

3

Wenn Sie Storyboards verwenden, stellen Sie sicher, "Opak" für Ihren Prototyp UITableViewCells

Verwandte Themen