2012-06-15 21 views
17

Mam problem z próbą zmiany tła widoku UITableView z grupami.Zmiana tła zgrupowanego UITableView

_tableView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"tableViewBg.png"]]; 

Zwykle działa na każdym innym UITableView, ale nie ten z grupami, czy jest coś innego, co muszę zrobić? W IB mam kolor tła ustawiony na przezroczysty kolor, ale to niewiele.

Odpowiedz

48

dodatkowo trzeba wyłączyć tle widok _tableView:

[_tableView setBackgroundView:nil]; 
_tableView.backgroundColor = [UIColor redColor]; 

Nie trzeba dodawać nowe spojrzenie na backgroundView. Działa to dla mnie w iOS6.

+0

+1 Dobra i prosta odpowiedź .. –

+0

Świetne ans zapisane razy. – Ryuk

+0

Geniusz. Kto wiedział, że pogrupowane nagłówki sekcji były jasne! Z każdego systemu iOS, w którym jesteśmy teraz w 2017 roku, nie trzeba usuwać tła tableView. Po prostu ustawiłem ją jako białą i to wszystko, co napisała. Dziękuję za pomoc w rozwiązaniu tego problemu! –

3

To, co zwykle robię z pogrupowanymi widokami UITableView, to kolor tła, który ma zostać wyczyszczony, oraz ustawienie tego obrazu wzoru na widok rodziców.

self.parentViewController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"tableBG.png"]]; 
self.tableView.backgroundColor = [UIColor clearColor]; 
+1

Próbowałem że też, ale bez powodzenia: self.view.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @ "tableViewBg.png"]]; _tableView.backgroundColor = [UIColor clearColor]; –

+0

Jeśli dobrze pamiętam, UITableView ma widok przewijania w tle .. Spróbuj tego .. dodał do mojej odpowiedzi. –

+0

Hmmm, to nie robi zbyt wiele, nie rozumiem, dlaczego to nie działa tutaj, w jakiejkolwiek innej tabeli użyłem tego samego kodu działa dobrze –

5

dlaczego nie ustawić tableView.backgroundView? możesz przydzielić widok obrazu dla określonego obrazu i przekazać go do widoku tła zamiast ustawiania koloru tła.

+0

Czy nie jest tam tableView.backgroundColor, aby zmienić kolor tła? Korzystanie z tableView.backgroundView wydaje się być długim obejściem. –

+8

Właściwie twoja odpowiedź pomogła mi, okazuje się, dlaczego zgrupujesz UITableView, ustawiono backgroundView, używając self.tableView.backgroundView = nil; usuniesz go –

0

Wystarczy dodać do odpowiedzi Nirav - można to również zrobić za pomocą serwera proxy iOS 5.

[[UITableView appearance] setBackgroundView:nil]; 
[[UITableView appearance] setBackgroundColor:[UIColor lightGreyColor]]; 

Zaletą jest to, że jest stosowana globalnie, więc możesz zgrupować wszystkie swoje dostosowania UI w jednym miejscu. Jednak będzie to dotyczyło wszystkich tableViews (nie tylko stylu grupowego).

0
tableView.backgroundView = nil; 
tableView.backgroundColor = [UIColor colorWithPatternImage: xxx]; 
// tableView.backgroundColor = [UIColor redColor]; // is ok 

jeśli ustawisz backgroundColor jako ten, podczas przewijania tableView, będzie również przewijany widok backgroundColor. więc możesz: tableView.backgroundView = nil; self.view.backgroundColor = ...

1

Wybrana odpowiedź działa, ale powoduje wyczyszczenie tła widoku nagłówkowego tableHeaderView i nagłówka tabeli. Jeśli chcesz tylko nagłówek tabeli, aby być pewnym kolorze białym i powiedzieć sekcja nagłówka wciąż być domyślny szary niż wykonać następujące czynności -

tableView.tableHeaderView.inputView.backgroundColor = [UIColor whiteColor];