2009-06-17 13 views
68

Próbuję ustawić kolor tła dla UITableViewCell jako przezroczysty. Ale nic nie działa. Mam kilka zdjęć/przycisków wewnątrz tableViewCell i chciałbym, aby białe tło zniknęło, aby uzyskać "pływający" efekt dla obrazów i przycisków (tak jakby nie znajdowały się wewnątrz tableview).Jak utworzyć obiekt UITableViewCell z przezroczystym tłem?

Każdy pomysł, jak to osiągnąć?

Odpowiedz

120

Jeśli oba pozostałe opcje nie działa spróbuj tego

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

myTable.backgroundColor = [UIColor clearColor]; pracował dla mnie! Dzięki – sjobe

+7

To zadziałało również dla mnie, chociaż musiałem dodatkowo użyć: cell.backgroundColor = [UIColor clearColor]; –

+4

Musiałem też użyć cell.textLabel.backgroundColor = [UIColor clearColor]! – Casebash

30

Uruchom z tych artykułów, aby uzyskać kolor tła poprawnie skonfigurować:

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/

Następnie spróbuj wszystkie następujące wiersze:

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

istnieje więcej niż tylko jeden zobacz ukrywanie w UITableViewCell. Powinno to sprawić, że wszystkie z nich staną się jasne.

+0

działa doskonale ... wyjątkiem jednego literówka: setBbackgroundColor => setBackgroundColor –

+1

background.contentView backgroundColor wydawał się być prawdziwym kluczem dla mnie. (Potwierdzone tylko w iOS7) – bitwit

+0

jesteś świetny. +100 jeśli mógłbym – Katushai

2

miałem problem gdzie mój zwyczaj tableviewcell backgroundimage pokryto białym tle etykiety, próbowałem wszystkiego i wreszcie ustawienie tła na jasny kolor w viewWillAppear załatwił sprawę.

 - (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 
    } 

aw rowForCellAtIndexPath ustawić obraz tła:

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

To jest rzeczywiście odpowiedzieć w docs UITableViewCell. Tak więc, podczas gdy musisz ustawić przezroczystość w swoich kontrolkach, faktyczny kolor tła komórki musi być ustawiony na.

„Uwaga: Jeśli chcesz zmienić kolor tła komórki (przez ustawienie koloru tła komórki za pośrednictwem właściwości backgroundColor deklarowanej przez UIView) musi to zrobić w Tableview: willDisplayCell: forRowAtIndexPath: metoda delegata, a nie w tableView: cellForRowAtIndexPath: źródła danych Zmiany w kolorach tła komórek w widoku tabeli w stylu grupy mają wpływ na iOS 3.0, który różni się od poprzednich wersji systemu operacyjnego. obszar wewnątrz zaokrąglonego prostokąta zamiast obszaru poza nim. "

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

+0

Uratowałeś mi życie. To jedyne rozwiązanie, które naprawdę działa. –

+1

Gdyby przyznano Oscara dla programistów, to teraz będziesz miał Oscara! – Sjakelien

11

Domyślnie tle swojego UITableViewCell jest biały. Wykonanie myCell.backgroundColor = [UIColor clearColor]; spowoduje, że twój UITableViewCell będzie przezroczysty, ALE nie poczujesz różnicy, ponieważ UITableView (contener twojego UITableViewCell) również ma domyślnie białe tło.

Jeśli chcesz zobaczyć swoje UIView tło trzeba będzie dokonać komórkę i stolika tło transparent:

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

Jeśli widok tabeli ma kolor tła i chcesz, aby komórka była przezroczysta, aby można było zobaczyć kolor tła widoku tabeli, jest to poprawne rozwiązanie. –

+0

Jak to nie jest TYLKO odpowiedź. Działa jak marzenie. –

17

Mam proste rozwiązanie

Objective-c wersja:

cell.backgroundColor = [UIColor clearColor]; 

Swift wersja:

cell.backgroundColor = UIColor.clearColor() 
+0

ale zawsze ustaw to wewnątrz - (void) tableView: (UITableView *) tableView willDisplayCell: (UITableViewCell *) komórka forRowAtIndexPath: (NSIndexPath *) indexPath –

3

Jeśli używasz storyboardy, upewnij się, odznacz "opaque" dla UITableViewCells prototypowych

Powiązane problemy