Kann nicht festgelegt werden, hintergrund-Farbe von UITableViewCell in IB
Habe ich eine Reihe von Zellen, die ich wiederverwenden in einer Tabelle anzeigen. Alle diese Zellen müssen nur verschiedene UILabel
s in Ihnen, und einige UIImageView
s (nichts deckt die komplette Zelle).
Einstellung der Hintergrundfarbe in den IB hat keine Wirkung (immer weiß oder transparent, können nicht sagen, welche von Ihnen). Aber wenn ich drücken Sie Befehlstaste-R (Simulation interface) die Zelle hat die richtige Hintergrundfarbe in den simulator.
Habe ich versucht, um es tableView:cellForRowAtIndexPath:
aber es funktioniert nicht wie ich denken würde, dass entweder.
Diesem funktioniert der trick:
cell.contentView.backgroundColor = [UIColor redColor];
aber diese haben keine Wirkung (auch wenn ich den cell.contentView.backgroundColor
zu clearColor
):
cell.backgroundView.backgroundColor = [UIColor redColor];
cell.backgroundColor = [UIColor redColor];
Ich alle layout/Schrift/hintergrund in Sachen IB. Eine Idee warum das nicht funktioniert in diesem Fall?
Warum brauche ich zum ändern der contentView
's backgroundColor
und nicht die backgroundView
's?
Scheint es ein häufiges Problem. Könnte jemand bitte zeigen Sie mich in die richtige Richtung, um (endlich) zu verstehen, wie Farben im hintergrund verarbeitet werden, der innerhalb einer table-view Zelle.
InformationsquelleAutor klemens | 2010-11-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es eine einfachere Lösung: Wenn Sie eine
UITableViewCell
im Interface Builder per drag-and-drop eine zusätzlicheUIView
so dass es deckt die gesamteUITableViewCell
Sie erstellen innerhalb der IB. Platzieren Sie Ihre zusätzliche UI-Elemente auf der Oberseite dieses weiterenUIView
. Sie können diese extraUIView
auf, was hintergrund Sie möchten.Es gibt durchaus ein paar Antworten auf StackOverflow, die Sie vorschlagen, ändern Sie die Hintergrundfarbe Ihres
UITableViewCell
mithilfe einer Codezeile wie dieser ein:Wenn Sie einen Schlagschatten hinzufügen, um Ihr Handy durch Anpassung der
contentView
's frame-Größe etwas, finden Sie möglicherweise, dass diese Zeile ändern Sie die Hintergrundfarbe der Zelle und die Farbe der Schlagschatten-Bereich als gut.InformationsquelleAutor russes
Ändern Sie die Hintergrundfarbe der Zelle, die Sie haben, es zu tun in der
willDisplayCell:forRowAtIndexPath:
Methode. Dies ist bereits in der UITableViewCell Dokumentation in der Nähe der Unterseite der Übersicht. So müssen Sie:Den contentView ist nur die empfohlene Untersicht zu stellen benutzerdefinierte Steuerelemente, so dass die Zelle bekommt layed heraus richtig, wenn Sie die Bearbeitung der Tabelle Los ist.
Nicht in der Lage zu bestätigen, zu diesem Zeitpunkt aber UITableViewCell zu sein scheint, ist ein besonderer Fall. In den Apple-docs für willDisplayCell und benutzerdefinierte Zellen, die Sie erwähnt, um diese Methode zu verwenden, die aufgerufen wird, "nach der Tabellenansicht, erfolgt die Einstellung Farben, Auswahl, etc". Es kann funktionieren, wenn Sie erstellen Sie eine benutzerdefinierte Unterklasse von UITableViewCell im code aber nicht in der Lage, es zu überprüfen, gerade jetzt.
ok, so ich es in code. thx für deine ausgezeichnete Hilfe.
Ich Frage mich, warum es so ist? Ist es eine Art bug oder was?
Sie können nun einfach die Zelle.contentView.backgroundColor statt, z.B. in cellForRowAtIndexPath:
InformationsquelleAutor