Ich möchte den Hintergrund (und möglicherweise auch den Rand) aller UITableViewCells in meiner UITableView anpassen. Bisher konnte ich dieses Material nicht anpassen, daher habe ich eine Reihe weißer Hintergrundzellen, was die Standardeinstellung ist.
Gibt es eine Möglichkeit, dies mit dem iPhone SDK zu tun?
UITableViewCellAccessoryCheckmark
? Vielen Dank.cell.textLabel.backgroundColor = [UIColor clearColor];
Hier ist der effizienteste Weg, um dieses Problem zu lösen: Verwenden Sie die delegate-Methode willDisplayCell (dies berücksichtigt auch die weiße Farbe für den Hintergrund der Textbeschriftung, wenn Sie cell.textLabel.text und / oder cell.detailTextLabel.text verwenden ):
Wenn diese Delegatmethode aufgerufen wird, wird die Farbe der Zelle über die Zelle und nicht über die Tabellenansicht gesteuert, wie bei Verwendung von:
Fügen Sie also im Hauptteil der Zelldelegatenmethode den folgenden Code hinzu, um die Farben der Zellen zu ändern, oder verwenden Sie einfach den Funktionsaufruf, um alle Zellen der Tabelle auf dieselbe Farbe zu bringen.
Diese Lösung hat unter meinen Umständen gut funktioniert ...
quelle
cell.backgroundColor = UIColor.clearColor
Dies ist wirklich einfach, da OS 3.0 nur die Hintergrundfarbe der Zelle in der willDisplayCell-Methode festlegt. Sie dürfen die Farbe nicht im cellForRowAtIndexPath festlegen.
Dies funktioniert sowohl für den einfachen als auch für den gruppierten Stil:
Code:
PS: Hier der Dokumentationsextrakt für willDisplayCell:
Ich habe diese Informationen in diesem Beitrag von colionel gefunden . Danke ihm!
quelle
Der beste Ansatz, den ich bisher gefunden habe, besteht darin, eine Hintergrundansicht der Zelle und einen klaren Hintergrund für die Unteransichten der Zellen festzulegen. Natürlich sieht dies nur auf Tischen mit indiziertem Stil gut aus, egal mit oder ohne Zubehör.
Hier ist ein Beispiel, bei dem der Hintergrund der Zelle gelb ist:
quelle
Fügen Sie dies einfach in Ihre UITableView-Delegatklassendatei (.m) ein:
quelle
Ich stimme Seba zu. Ich habe versucht, meine abwechselnde Zeilenfarbe in der delegierten Methode rowForIndexPath festzulegen, habe jedoch inkonsistente Ergebnisse zwischen 3.2 und 4.2 erhalten. Das Folgende hat für mich großartig funktioniert.
quelle
Nachdem Sie alle verschiedenen Lösungen ausprobiert haben, ist die folgende Methode die eleganteste. Ändern Sie die Farbe in der folgenden Delegatenmethode:
quelle
vlado.grigorov hat einige gute Ratschläge - der beste Weg ist, eine Hintergrundansicht zu erstellen und dieser eine Farbe zu geben, wobei alles andere auf clearColor gesetzt wird. Ich denke auch, dass dies der einzige Weg ist, um die Farbe korrekt zu löschen (probieren Sie sein Beispiel aus - aber setzen Sie 'clearColor' anstelle von 'yellowColor'), was ich versucht habe.
quelle
Das Anpassen des Hintergrunds einer Tabellenansichtszelle wird schließlich zu einem "Alles oder Nichts" -Ansatz. Es ist sehr schwierig, die Farbe oder das Bild für den Hintergrund einer Inhaltszelle so zu ändern, dass sie nicht seltsam aussehen.
Der Grund ist, dass die Zelle tatsächlich die Breite der Ansicht überspannt. Die abgerundeten Ecken sind nur ein Teil des Zeichenstils, und die Inhaltsansicht befindet sich in diesem Bereich.
Wenn Sie die Farbe der Inhaltszelle ändern, werden an den Ecken weiße Stellen angezeigt. Wenn Sie die Farbe der gesamten Zelle ändern, wird ein Farbblock über die Breite der Ansicht angezeigt.
Sie können eine Zelle definitiv anpassen, aber es ist nicht ganz so einfach, wie Sie zunächst vielleicht denken.
quelle
Erstellen Sie eine Ansicht und legen Sie diese als Hintergrundansicht der Zelle fest
quelle
So erweitern Sie die Antwort von N.Berendt: Wenn Sie die Zellenfarbe basierend auf einem bestimmten Status im tatsächlichen Zellendatenobjekt festlegen möchten, konfigurieren Sie zu dem Zeitpunkt den Rest der Informationen für die Tabellenzelle, was normalerweise der Fall ist, wenn Sie sich in der befinden Mit der cellForRowAtIndexPath-Methode können Sie dies tun, indem Sie die willDisplayCell-Methode überschreiben, um die Hintergrundfarbe der Zelle aus der Hintergrundfarbe der Inhaltsansicht festzulegen. Dadurch wird das Problem umgangen, dass die Hintergründe der Offenlegungsschaltflächen usw. nicht richtig sind, Sie können jedoch die Farbe in der cellForRowAtIndexPath-Methode steuern Hier führen Sie alle anderen Zellenanpassungen durch.
Also: Wenn Sie diese Methode Ihrem Tabellenansicht-Delegaten hinzufügen:
Dann können Sie in Ihrer cellForRowAtIndexPath-Methode Folgendes tun:
Dies erspart Ihnen das erneute Abrufen Ihrer Datenobjekte in der willDisplayCell-Methode und spart außerdem zwei Stellen, an denen Sie Ihre Tabellenzelle anpassen / anpassen können. Alle Anpassungen können in der cellForRowAtIndexPath-Methode erfolgen.
quelle
Erstellen Sie ein Bild als Hintergrund mit Photoshop oder Gimp und nennen Sie es myimage. Fügen Sie diese Methode dann Ihrer tableViewController-Klasse hinzu:
Dies funktioniert auch, wenn Sie UITableView im Attributinspektor auf "Benutzerdefiniert" gesetzt haben.
quelle
Meine Lösung besteht darin, dem cellForRowAtIndexPath-Ereignis den folgenden Code hinzuzufügen:
Funktioniert unter allen Umständen, auch mit Offenlegungsschaltflächen, und es ist besser, wenn Ihre Logik auf den Farbstatus von Zellen in cellForRowAtIndexPath einwirkt als auf das Ereignis cellWillShow, denke ich.
quelle
Unterklasse UITableViewCell und füge dies in die Implementierung ein:
quelle
quelle
Dies funktioniert im neuesten Xcode.
quelle
Versuche dies:
quelle