Ich habe eine benutzerdefinierte Tabellenklasse für Tabellenansichten implementiert, von der geerbt wird UITableViewCell
. Die Tabellenansicht enthält ein Hintergrundbild, daher soll der Hintergrund der Zelle transparent sein. Es sieht gut aus vor iOS7.
In iOS7 wird die Zelle jedoch immer mit einem weißen Hintergrund angezeigt.
Selbst für Xcode7, 2015 gibt es einen Fehler im Storyboard : Sie müssen die Hintergrundfarbe einer Zelle im Code festlegen.
ios
objective-c
cocoa-touch
ios7
Kjuly
quelle
quelle
Antworten:
Wie Apple DOC sagte ( UITableViewCell Class Reference ):
Für meinen Fall, dass zum Anzeigen von Zellen mit transparentem Hintergrund lediglich die Delegate-Methode im Tabellenansichts-Controller wie folgt implementiert werden muss:
Nur Hinweis : Wie @null sagte: "... es scheint einen Fehler im Interface Builder zu geben ..." , bin ich mir nicht ganz sicher, ob es den Fehler gibt, aber es scheint so, weil sein Kommentar mehrere Stimmen erhalten hat. Wenn Sie also IB verwenden, stimmt möglicherweise etwas nicht. :) :)
quelle
tableView:cellForRowAtIndexPath:
Methode tun .Ich habe es ein wenig untersucht und festgestellt, dass die Zellenhintergrundfarbe vom Darstellungssystem festgelegt wird. Wenn also alle Zellen in Ihrer Anwendung einen klaren Hintergrund haben, wäre die einfachste Lösung:
Und selbst wenn sie einen anderen Hintergrund haben, scheint eine klare Farbe als Standard am bequemsten zu sein.
quelle
UITableViewCell
s, daher war es für mich kein Problem, einer Oberklasse einen Initialisierer zur Verfügung zu stellen, auf den die Hintergrundfarbe eingestellt werden kannclearColor
, aber wissen Sie was? Das hat nicht funktioniert ... Ich meine, WARUM, APFEL?Schreiben Sie dies in Ihre cellForRowAtIndexPath-Methode, bevor Sie cell zurückgeben.
quelle
Die Standardhintergrundfarbe eines
UITableViewCell
in iOS 7 ist Weiß.Sie müssen die
backgroundColor
Eigenschaft irgendwo in Ihrem Code festlegen . Legen Sie es beispielsweise fest, nachdem Sie die Zelle neu erstellt haben.quelle
Ich habe tatsächlich festgestellt, dass das Problem darauf zurückzuführen ist, dass die Hintergrundfarbe von UITableView nicht auf klar eingestellt ist. Wenn Sie die Hintergrundfarbe der UITableViewCell in "Löschen" ändern und feststellen, dass immer noch Weiß angezeigt wird, stellen Sie sicher, dass die Hintergrundfarbe der UITableView auf "Löschen" eingestellt ist (oder was auch immer Sie möchten).
In Swift
quelle
Dies ist definitiv ein iOS-Fehler. In iOS 8
Interface Builder
funktioniert das Einstellen der Hintergrundfarbe für das iPhone einwandfrei, für das iPad jedoch immerwhiteColor
. Um dies zu beheben, geben Sie in dercellForIndexPath
Datenquellennachricht Folgendes ein:cell.backgroundColor = cell.backgroundColor
Und es wird funktionieren. Genau aus diesem Grund habe ich gesagt, dass es ein Fehler ist, da der Code selbst ziemlich beschissen ist, aber er funktioniert.
quelle
Möglicherweise ist Ihre UITableViewCell standardmäßig ausgewählt. Sie können dies mit dem neuen visuellen Debugger von Xcode 6s bestätigen (oder genau herausfinden, in welcher Ansicht diese weiße Zelle angezeigt wird ).
Interessanterweise hat es nach dem Wissen, dass das Einstellen der Hintergrundfarbe der ausgewählten Zelle zum Löschen immer noch nicht funktioniert hat. Es stellte sich heraus, dass ich nur den Auswahlstil ändern musste, als ich diese benutzerdefinierte Zelle erstellte:
quelle
Ich fand heraus, dass keines der oben genannten Funktionen unter XCode 5.1.1, iOS 7.1 funktioniert.
Wenn Sie Interface Builder mit Prototypzellen verwenden, wählen Sie die Prototypzelle aus und ändern Sie in der Attributauswahl im Abschnitt Ansicht die Standardeinstellung für das Hintergrundformular in Farbe löschen:
Dies scheint gut zu funktionieren. Keine der oben genannten Codeänderungen ist erforderlich - dies ist eine reine IB-Lösung.
quelle
Die akzeptierte Antwort hat das Problem für mich nicht behoben. Ich musste das machen:
Aus der Datenquellenklasse cellForRowAtIndexPath der Tabelle:
quelle
cell = [tableView dequeueReusableCellWithIdentifier:<#Reuse ID#> forIndexPath:indexPath]
. In früheren Versionen löschen Sie das indexPath-Argument und testen dann auf Null, wobei SieinitWithStyle:reuseIdentifier
gemäß Ihrem Code-Snippet im Fall Null instanziieren .Für mich
cell.backgroundColor = cell.contentView.backgroundColor;
entweder eingestellttableView:willDisplayCell:forRowAtIndexPath:
odertableView:cell:forRowAtIndexPath:
den Job gemacht.Dies liegt daran, dass ich die Hintergrundfarbe von contentView im Interface Builder wie gewünscht festgelegt habe.
quelle
Beim Hinzufügen von UI-Objekten zu einer Zelle fügt Xcode 5 / IOS 7 eine neue "Inhaltsansicht" hinzu, die die Übersicht aller Elemente in der Zelle darstellt. Um die Hintergrundfarbe der Zelle festzulegen, legen Sie die Hintergrundfarbe dieser Inhaltsansicht fest. Die obigen Lösungen haben bei mir nicht funktioniert, aber diese hat bei mir gut funktioniert.
quelle
Swift 1.2 Lösung:
Fügen Sie einfach eine explizite Definition für die Hintergrundfarbe Ihrer Zelle hinzu:
quelle
Hatte ein ähnliches Problem, musste
Fügen Sie dies dem Code hinzu, um es zu korrigieren
quelle
Sie können auch Farbcode verwenden, um Ihre UITableView Cell lukrativ zu machen.
Dies ist der Code zum Anwenden der Farbcodemethode:
quelle