2013-10-01 34 views
11

Jeśli ustawię czerwony separatorColor w widoku tabeli w systemie iOS 7, a także ustawię separatorInset na UIEdgeInsetsZero lub dowolną inną niestandardową wartość wstawki, wszystkie dodatkowe lub "dodatkowe" wiersze mają domyślne kolorowe separatory. Jak mogę to naprawić?Dlaczego funkcja UITableView ignoruje separatorColor dla "dodatkowych" separatorów z niestandardowym separatorem?

ostatnie zdanie dokumentacji dotyczącej separatorInset Oznacza to, że w jakiś sposób kontroluje dodatkowe zapisy, ale nie widzę jak:

w iOS 7 i później, separatory komórkowe nie rozciągają się aż do krawędź widoku tabeli. Ta właściwość ustawia domyślną wstawkę dla wszystkich komórek w tabeli, podobnie jak rowHeight ustawia domyślną wysokość komórek. Służy również do zarządzania separatorami "ekstra" narysowanymi na dole tabel stylu prostego.

ustawić separator w viewDidLoad:

self.tableView.separatorColor = [UIColor redColor]; 

I masz to:

enter image description here

I po ustawieniu separatorInset i kolor:

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

Dostajesz to:

enter image description here

Dlaczego tak się dzieje i jak mogę zrobić wszystkie separatory czerwony i ustawić wszystkie wypustki separujące do zera? Czy to błąd?

+0

Te same problemy zdają się występować w przypadku każdego niestandardowego separatora, nie tylko UIEdgeInsetsZero.Na szczęście przyjęte rozwiązanie działa również z dowolnym niestandardowym separatorem. Dzięki! –

+0

Dobry połów. Zaktualizowałem pytanie, aby uwzględnić to. – Aaron

Odpowiedz

20

Rozwiązałem, ale nie potrafię wyjaśnić dlaczego.

Zamień kolejność dwóch instrukcji. Ustawić kolor, potem wstawce:

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

Wszystko działa:

enter image description here

+0

Dziwne, ale zadziałało to dla mnie! –

+0

To jest hack. –

+1

Tak. Czy możesz nam powiedzieć, dlaczego twoja odpowiedź nie jest również włamaniem? Nie wyjaśnia, dlaczego kolor nie jest przestrzegany. – Aaron

2

warto dodać to do cellForRowAtIndexPath. Jak również ustawienie separatorainsetu tableView.

cell.separatorInset = UIEdgeInsetsZero;

Z UITableViewCell iOS Docs:

@property (nonatomic) UIEdgeInsets separatorInset

Wartości wkładki z zawartości komórki.

Możesz użyć tej właściwości, aby dodać spację między bieżącą zawartością komórki a lewą i prawą krawędzią tabeli. Dodatnie wartości wstawek przenoszą zawartość komórki i separator komórek do wewnątrz i od krawędzi tabeli. Wartości ujemne są traktowane tak, jakby wstawka była ustawiona na 0.