Chciałbym dostosować tło (a może także ramkę) wszystkich UITableViewCells w moim UITableView. Do tej pory nie byłem w stanie dostosować tego, więc mam kilka białych komórek, które są domyślne.
Czy można to zrobić za pomocą zestawu iPhone SDK?
Chciałbym dostosować tło (a może także ramkę) wszystkich UITableViewCells w moim UITableView. Do tej pory nie byłem w stanie dostosować tego, więc mam kilka białych komórek, które są domyślne.
Czy można to zrobić za pomocą zestawu iPhone SDK?
Musisz ustawić kolor tła zawartości komórki Wyświetl na swój kolor. Jeśli używasz akcesoriów (takich jak strzałki ujawnienia itp.), Będą one wyświetlane jako białe, więc może być konieczne zwinięcie ich niestandardowych wersji.
UITableViewCellAccessoryCheckmark
? Dzięki.cell.textLabel.backgroundColor = [UIColor clearColor];
Oto najbardziej skuteczny sposób, w jaki udało mi się rozwiązać ten problem, użyj metody delegowania willDisplayCell (dba o biały kolor tła etykiety tekstowej również podczas korzystania z cell.textLabel.text i / lub cell.detailTextLabel.text ):
Po wywołaniu tej metody delegowania kolor komórki jest kontrolowany za pośrednictwem komórki, a nie widoku tabeli, tak jak w przypadku użycia:
Tak więc w treści metody delegowania komórek dodaj następujący kod, aby naprzemiennie kolory komórek lub po prostu użyj wywołania funkcji, aby wszystkie komórki tabeli miały ten sam kolor.
To rozwiązanie działało dobrze w moich okolicznościach ...
źródło
cell.backgroundColor = UIColor.clearColor
Jest to bardzo proste, ponieważ OS 3.0 ustawia tylko kolor tła komórki w metodzie willDisplayCell. Nie wolno ustawiać koloru w cellForRowAtIndexPath.
Działa to zarówno dla stylu zwykłego, jak i zgrupowanego:
Kod:
PS: tutaj fragment dokumentacji willDisplayCell:
Znalazłem tę informację w tym poście od Colionela . Podziękuj mu!
źródło
Najlepszym podejściem, jakie do tej pory znalazłem, jest ustawienie widoku tła komórki i wyczyszczenie tła widoków komórki. Oczywiście wygląda to ładnie tylko na stołach z indeksowanym stylem, bez względu na to, czy są z akcesoriami, czy bez.
Oto próbka, w której tło komórki jest spłaszczone na żółto:
źródło
Po prostu włóż to do pliku UITableView klasy pliku delegowanego (.m):
źródło
Zgadzam się z Sebą, próbowałem ustawić swój zmienny kolor wiersza w metodzie delegowania rowForIndexPath, ale uzyskiwałem niespójne wyniki między 3.2 a 4.2. Poniższe działało dla mnie świetnie.
źródło
Po wypróbowaniu wszystkich różnych rozwiązań, najbardziej elegancka jest następująca metoda. Zmień kolor w następującej metodzie delegowania:
źródło
vlado.grigorov ma kilka dobrych rad - najlepszym sposobem jest utworzenie widoku tła i nadanie mu koloru, ustawiając wszystko inne na clearColor. Myślę też, że w ten sposób jest to jedyny sposób, aby poprawnie wyczyścić kolor (wypróbuj jego próbkę - ale ustaw „clearColor” zamiast „yellowColor”), co właśnie próbowałem zrobić.
źródło
Dostosowywanie tła komórki widoku tabeli w końcu staje się i podejście „wszystko albo nic”. Bardzo trudno jest zmienić kolor lub obraz użyty na tle komórki treści w sposób, który nie wygląda dziwnie.
Powodem jest to, że komórka faktycznie obejmuje szerokość widoku. Zaokrąglone rogi są tylko częścią stylu rysowania, a widok zawartości znajduje się w tym obszarze.
Jeśli zmienisz kolor komórki treści, zobaczysz białe bity widoczne w rogach. Jeśli zmienisz kolor całej komórki, uzyskasz blok koloru obejmujący szerokość widoku.
Możesz zdecydowanie dostosować komórkę, ale nie jest to tak łatwe, jak mogłoby się początkowo wydawać.
źródło
Utwórz widok i ustaw go jako widok tła komórki
źródło
Aby rozszerzyć odpowiedź N.Berendt - Jeśli chcesz ustawić kolor komórki w oparciu o jakiś stan w rzeczywistym obiekcie danych komórki, w czasie konfigurowania reszty informacji dla komórki tabeli, to jest zwykle, gdy jesteś w W przypadku metody cellForRowAtIndexPath można to zrobić, zastępując metodę willDisplayCell w celu ustawienia koloru tła komórki z koloru tła widoku zawartości - to rozwiązuje problem tła przycisków ujawnienia itp., które nie są prawidłowe, ale nadal pozwala kontrolować kolor w metodzie cellForRowAtIndexPath gdzie wykonujesz wszystkie inne dostosowania komórek.
Więc: Jeśli dodasz tę metodę do delegata widoku tabeli:
Następnie w metodzie cellForRowAtIndexPath możesz wykonać:
Oszczędza to konieczności ponownego pobierania obiektów danych w metodzie willDisplayCell, a także zapisuje dwa miejsca, w których dostosowujesz / dostosowujesz komórkę tabeli - wszystkie dostosowania można przeprowadzić w metodzie cellForRowAtIndexPath.
źródło
Utwórz obraz, który będzie używany jako tło w Photoshopie lub Gimpie i nazwij go myimage. Następnie dodaj tę metodę do klasy tableViewController:
Działa to również, jeśli ustawiłeś UITableView na niestandardowy w Inspektorze atrybutów.
źródło
Moje rozwiązanie polega na dodaniu następującego kodu do zdarzenia cellForRowAtIndexPath:
Działa w każdych okolicznościach, nawet z przyciskami ujawniania, i lepiej, aby logika działała na stan koloru komórek w cellForRowAtIndexPath niż w zdarzeniu cellWillShow.
źródło
Podklasa UITableViewCell i dodaj to do implementacji:
źródło
źródło
Będzie to działać w najnowszym Xcode.
źródło
Spróbuj tego:
źródło