Zdaję sobie sprawę, że iOS 7 nie został oficjalnie wydany i nie powinniśmy o tym rozmawiać, ALE wariuję, próbując rozwiązać ten problem. Na iOS 6 mój widok tabeli był przezroczysty i wyglądał świetnie. Po raz pierwszy korzystam z iOS 7, a tło jest białe.
Próbowałem zmienić kolor backgroundColor tabeli, kolor komórki itp. Na UIColor clearColor, ale nie wprowadziłem żadnych zmian.
Jak rozwiązać ten problem?
ios
uitableview
Teddy13
źródło
źródło
backgroundView
czysty?Odpowiedzi:
// Fix for iOS 7 to clear backgroundColor cell.backgroundColor = [UIColor clearColor]; cell.backgroundView = [[UIView new] autorelease]; cell.selectedBackgroundView = [[UIView new] autorelease];
w cellForRowAtIndexPath
Upewnij się również, że widok tabeli faktycznie ma przezroczyste tło (w scenorysie):
źródło
Połóż to:
cell.backgroundColor = [UIColor clearColor];
W tej sekcji:
źródło
backgroundView
pusty widok, ale ten dodatkowy kod jest potrzebny dla iOS 7.Spróbuj najpierw ustawić backgroundView na nil.
[self.tableView setBackgroundView:nil]; [self.tableView setBackgroundColor:[UIColor clearColor]];
Nie jestem pewien, czy jest to zmiana w dokumentacji z iOS7 lub zawsze tam była i po prostu nie wpłynęła na kolor tła, ale na odwołanie do klasy UITableView @property backgroundView
„Aby ustawić kolor tła widoku tabeli, należy ustawić tę właściwość na zero”.
edycja: poprawiona składnia kodu
źródło
Odpowiedź została udzielona, ale na wiele sposobów nieprawidłowo.
Musisz zaimplementować poniższą metodę delegowania:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { [cell setBackgroundColor:[UIColor clearColor]]; }
Nie możesz umieścić poprawki w cellForRowAtIndexPath, ponieważ jest to po wyrenderowaniu komórki i będzie migać białym tłem, zanim tło zostanie wyczyszczone (na wolniejszych urządzeniach).
Użyj tej metody delegowania, a Twoje problemy zostaną rozwiązane!
źródło
Właściwie oficjalnie poprawne miejsce do zmiany koloru tła komórki jest inne zgodnie z dokumentacją ( odwołanie do klasy UITableViewCell ):
źródło
szybki 3, 4 i 5
cell.backgroundColor = UIColor.clear
źródło
To dość frustrujący problem. Oto moje obecne rozwiązanie:
Dodaj to do swojej
UITableViewCell
podklasy.- (void)didMoveToSuperview { [super didMoveToSuperview]; self.backgroundColor = [UIColor clearColor]; }
źródło
To zadziałało dla mnie w iOS7 +:
self.tableView.backgroundColor =[UIColor blueColor]; self.tableView.opaque = NO; self.tableView.backgroundView = nil;`
a potem w
cellForRowAtIndexPath:
cell.backgroundColor = [UIColor clearColor];
źródło
wypróbuj ten fragment kodu
cell.contentView.backgroundColor = [UIColor clearColor]; cell.backgroundColor = [UIColor colorWithWhite:1.0 alpha:0.5];
źródło
To zadziałało tylko dla mnie, gdy edytowałem wyraźny kolor tła dla każdej komórki i czysty kolor dla samej tabeli. ZARÓWNO PROGRAMMATYCZNIE
aby ustawić czysty kolor stołu:
override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. initMenu() myTableView.backgroundColor = UIColor.clearColor() }
aby ustawić kolor dla komórek:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCellWithIdentifier("tablecellid", forIndexPath: indexPath) cell.backgroundColor = UIColor.clearColor() return cell }
źródło
Jedna rzecz do miłej. Domyślny kolor UITable wydaje się być biały (nie wiem dlaczego)
Ale lepiej to zmień.
źródło
Pierwszy zestaw
tableView.backgroundColor = [UIColor clearColor];
Drugi zestaw
tableCell.backgroundColor = [UIColor clearColor];
źródło
utwórz IB Outlet dla widoku tabeli @IBOutlet słaby var yourTable: UITableView!
w widoku obciążenia
override func viewDidLoad() { yourTable.delegate = self yourTable.dataSource = self yourTable.backgroundColor = UIColor.clearColor() }
jeśli chcesz wyczyścić kolor komórki, zrób to również w
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { cell.backgroundColor = UIColor.clearColor() }
źródło
W mojej aplikacji musiałem ustawić kolor
backgroundColor
na mojejUITableViewCell
klasie,[UIColor clearColor]
gdy zaktualizowałemiOS 7
.źródło
Próbować
[myTable setSeparatorStyle:UITableViewCellSeparatorStyleNone]; [myTable setSeparatorInset:UIEdgeInsetsZero];
I
cell.backgroundColor = [UIColor clearColor];
źródło
W moim przypadku komórka została utworzona przy użyciu xib. wygląda na to, że program budujący interfejs na xcode5 ma problem z ustawieniem clearColor na cell.backgroundColor.
Wszystko, co musiałem zrobić, to rzeczywiście ustawić
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { // get the cell from the nib //then force the backgroundColor cell.backgroundColor = [UIColor clearColor] return cell; }
źródło
Po prostu wybierz opcję Wyczyść kolor na tle widoku dla tabeli i komórki również.
źródło
szybki 3
override func viewDidLoad() { super.viewDidLoad() tableView.backgroundColor = UIColor.clear }
źródło
// Fix iOS 7 clear backgroundColor compatibility // I Think this two lines only are enough cell.backgroundColor = [UIColor clearColor]; cell.selectedBackgroundView = [[UIView new] autorelease];
źródło
Zestaw
tableView.backgroundColor = [UIColor clearColor];
in viewDidLoad.
jeśli to nie działa, spróbuj:
tableView.backgroundView = nil;
źródło
Szybko 3
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell", for: indexPath) cell.backgroundColor = .clear cell.backgroundView = UIView() cell.selectedBackgroundView = UIView() return cell }
źródło