Chciałbym dostosować zarówno tło, jak i kolor obramowania UITableView w stylu grupowym.
Udało mi się dostosować kolor tła, korzystając z:
tableView.contentView.backgroundColor = [UIColor greenColor];
Ale kolor obramowania to wciąż coś, czego nie wiem, jak zmienić.
Jak dostosować te dwa aspekty widoku tabeli w stylu grupowania?
Odpowiedzi:
AKTUALIZACJA: W iPhone OS 3.0 i nowszych
UITableViewCell
ma terazbackgroundColor
właściwość, która sprawia, że jest to naprawdę łatwe (szczególnie w połączeniu z[UIColor colorWithPatternImage:]
inicjatorem). Ale zostawię tutaj wersję 2.0 odpowiedzi dla każdego, kto jej potrzebuje…To trudniejsze niż powinno być. Oto jak to zrobiłem, kiedy musiałem to zrobić:
Musisz ustawić właściwość backgroundView UITableViewCell na niestandardowy UIView, który rysuje obramowanie i tło w odpowiednich kolorach. Ten widok musi mieć możliwość rysowania granic w 4 różnych trybach, zaokrąglonych u góry dla pierwszej komórki w sekcji, zaokrąglonych u dołu dla ostatniej komórki w sekcji, bez zaokrąglonych rogów dla komórek w środku sekcji i zaokrąglone we wszystkich 4 rogach w przypadku sekcji zawierających jedną komórkę.
Niestety nie mogłem dowiedzieć się, jak ustawić ten tryb automatycznie, więc musiałem ustawić go w metodzie -cellForRowAtIndexPath UITableViewDataSource.
To prawdziwa PITA, ale z inżynierami Apple potwierdziłem, że jest to obecnie jedyny sposób.
Aktualizacja Oto kod dla tego niestandardowego widoku bg. Jest błąd rysowania, który sprawia, że zaokrąglone rogi wyglądają trochę śmiesznie, ale przeszliśmy do innego projektu i usunęliśmy niestandardowe tła, zanim udało mi się to naprawić. Mimo to prawdopodobnie będzie to dla Ciebie bardzo pomocne:
źródło
Wiem, że odpowiedzi dotyczą zmiany zgrupowanych komórek tabeli, ale na wypadek, gdyby ktoś chciał również zmienić kolor tła widoku tabeli:
Nie tylko musisz ustawić:
Musisz także zmienić lub pozbyć się widoku tła:
źródło
Przede wszystkim dzięki za ten kod. Dokonałem pewnych zmian rysunkowych w tej funkcji, aby usunąć problem z narożnikami podczas rysowania.
źródło
Dziękuję za kod, właśnie tego szukałem. Dodałem również następujący kod do kodu Vimal, aby zaimplementować przypadek komórki CustomCellBackgroundViewPositionSingle. (Wszystkie cztery rogi są zaokrąglone).
źródło
Jedna rzecz, na którą natknąłem się z powyższym kodem CustomCellBackgroundView od Mike'a Akersa, który może być przydatny dla innych:
cell.backgroundView
nie jest automatycznie przerysowywany, gdy komórki są ponownie używane, a zmiany pozycji zmiennej backgroundView nie wpływają na ponownie używane komórki. Oznacza to, że długie stoły zostaną nieprawidłowo narysowanecell.backgroundViews
biorąc pod uwagę ich pozycje.Aby rozwiązać ten problem bez konieczności tworzenia nowego backgroundView za każdym razem, gdy wyświetlany jest wiersz, wywołaj
[cell.backgroundView setNeedsDisplay]
na końcu swojego-[UITableViewController tableView:cellForRowAtIndexPath:]
. Lub w przypadku rozwiązania bardziej wielokrotnego użytku Zastąp funkcję ustawiającą pozycję CustomCellBackgroundView, aby uwzględnić[self setNeedsDisplay]
.źródło
Dzięki za ten super pomocny post. Na wypadek, gdyby ktoś (taki jak ja!) Chciał po prostu mieć całkowicie puste tło komórki zamiast dostosowywania go za pomocą obrazów / tekstu / innych treści w IB i nie może dowiedzieć się, jak do cholery pozbyć się głupiego obramowania / wypełnienia / tło, mimo że ustawiłeś to na jasne w IB ... oto kod, którego użyłem, który załatwił sprawę!
Mam nadzieję, że pomoże to komuś innemu! Wydaje się działać jak urok.
źródło
cell.backgroundView
.Wielkie dzięki dla wszystkich, którzy opublikowali swój kod. To jest bardzo przydatne.
Wyprowadziłem podobne rozwiązanie, aby zmienić kolor podświetlenia dla zgrupowanych komórek widoku tabeli. Zasadniczo selectedBackgroundView UITableViewCell (nie backgroundView). Który nawet na iPhone OS 3.0 nadal potrzebuje tego rozwiązania PITA, o ile wiem ...
Poniższy kod zawiera zmiany dotyczące renderowania podświetlenia za pomocą gradientu zamiast jednego jednolitego koloru. Usunięto również renderowanie obramowań. Cieszyć się.
źródło
Możesz dostosować kolor obramowania, ustawiając
źródło
Aby zmienić kolor obramowania widoku tabeli:
In.h:
W .m:
źródło
To zadanie można łatwo wykonać za pomocą PrettyKit , dodając około 5 linii kodu. Jeśli używasz
nib
plików lubstoryboard
też nie zapomnij zastosować tego małego hacka . Korzystając z tego podejścia, powinieneś podklasować swoją komórkę zPrettyTableViewCell
:To jest przykład mojego
cellForRowAtIndexPath
:źródło
Miałem z tym problemy i próbowałem wielu kombinacji rzeczy, ponieważ zauważyłem, że dla niektórych komórek działało dobrze, ale nie dla innych.
O dziwo okazało się, że można ustawić cell.backgroundColor na lightGrayColor i wszystko działa idealnie - ale blueColor sprawił mi problemy z nieaktualizowaniem zewnętrznych krawędzi.
Chyba że jest naprawdę ważne, aby używać zielonego - być może warto spróbować. Może się zdarzyć, że jest to funkcja, która pozwala ludziom używać tylko szarych kolorów podczas wskazywania wybranej komórki.
źródło