2013-10-01 5 views
11

Wenn ich eine rote separatorColor in einer Tabellenansicht in iOS 7 und auch separatorInset auf UIEdgeInsetsZero oder einen anderen benutzerdefinierten Einfügewert festlegen, haben alle zusätzlichen oder "extra" Zeilen standardmäßig farbige Trennzeichen. Wie kann ich das beheben?Warum ignoriert UITableView separatorColor für "zusätzliche" Trennzeichen mit benutzerdefiniertem separatorInset?

Der letzte Satz der Dokumentation auf separatorInset impliziert, dass es irgendwie um die zusätzlichen Aufzeichnungen kontrolliert, aber ich sehe nicht, wie:

In iOS 7 und höher Zellseparatoren erstrecken sich nicht den ganzen Weg zu der Rand der Tabellenansicht. Diese Eigenschaft legt den Standardinset für alle Zellen in der Tabelle fest, ähnlich wie die Standardhöhe für Zellen festlegt. Es wird auch verwendet, um die "Extra" -Separatoren zu verwalten, die am unteren Ende der Plain Style-Tabellen gezeichnet werden.

den Separator in viewDidLoad Set:

self.tableView.separatorColor = [UIColor redColor]; 

Und Sie erhalten diese:

enter image description here

Und wenn legen Sie die separatorInset und eine Farbe:

self.tableView.separatorInset = UIEdgeInsetsZero; // <- any custom inset will do 
self.tableView.separatorColor = [UIColor redColor]; 

Sie diese:

enter image description here

Warum passiert das und wie kann ich alle Separatoren rot und stellen Sie die alle Separator Einsätze Null zu? Ist das ein Fehler?

+0

Das gleiche Problem scheint mit jedem benutzerdefinierten separatorInset zu passieren, nicht nur UIEdgeInsetsZero.Glücklicherweise funktioniert die akzeptierte Lösung mit jedem benutzerdefinierten separatorInset. Vielen Dank! –

+0

Guter Fang. Ich habe die Frage aktualisiert, um dies zu berücksichtigen. – Aaron

Antwort

20

Gelöst es, aber ich kann nicht erklären, warum.

Tauschen Sie die Reihenfolge der beiden Anweisungen. Legen Sie die Farbe zuerst, dann die Einschub:

self.tableView.separatorColor = [UIColor redColor]; 
self.tableView.separatorInset = UIEdgeInsetsZero; 

Alles funktioniert:

enter image description here

+0

Seltsam, aber es hat für mich funktioniert! –

+0

Dies ist ein Hack. –

+1

Ja. Kannst du uns sagen, warum deine Antwort auch kein Hack ist? Es erklärt nicht, warum die Farbe nicht respektiert wird. – Aaron

2

Versuchen, diese zu cellForRowAtIndexPath. Sowie das Festlegen der SeparatorInsets der TableView.

cell.separatorInset = UIEdgeInsetsZero;

Vom UITableViewCell iOS Docs:

@property (nonatomic) UIEdgeInsets separatorInset

Der Einschub Werte für den Inhalt der Zelle.

Sie können diese Eigenschaft verwenden, um einen Abstand zwischen dem Inhalt der aktuellen Zelle und dem linken und rechten Rand der Tabelle hinzuzufügen. Positive Inset-Werte verschieben den Zelleninhalt und das Zellentrennzeichen nach innen und von den Tabellenrändern weg. Negative Werte werden behandelt, als wäre der Inset auf 0 gesetzt.

Verwandte Themen