2013-10-01 35 views
11

Se si imposta un separatorColor rosso su una vista tabella in iOS 7 e si imposta anche separatorInset su UIEdgeInsetsZero o qualsiasi altro valore di inserimento personalizzato, tutte le righe aggiuntive o "extra" hanno separatori colorati predefiniti. Come posso risolvere questo?Perché UITableView ignora separatorColor per separatori "extra" con separatore personalizzatoInset?

L'ultima frase della documentazione sul separatorInset implica che controlla in qualche modo i record in più, ma non vedo come:

In iOS 7 e versioni successive, separatori cellulari non si estendono fino alla il bordo della vista tabella. Questa proprietà imposta l'inserto predefinito per tutte le celle nella tabella, in modo simile a rowHeight imposta l'altezza predefinita per le celle. Viene anche utilizzato per gestire i separatori "extra" disegnati nella parte inferiore delle tabelle in stile semplice.

impostare il separatore in viewDidLoad:

self.tableView.separatorColor = [UIColor redColor]; 

e si ottiene questo:

enter image description here

E quando si imposta la separatorInset e un colore:

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

Si ottiene in questo modo:

enter image description here

Perché accade questo e come posso fare tutti i separatori rosso e impostare tutti i inserti di separazione a zero? è un insetto?

+0

Gli stessi problemi sembrano verificarsi con qualsiasi separatore personalizzatoInset, non solo UIEdgeInsetsZero.Fortunatamente la soluzione accettata funziona anche con qualsiasi separatore personalizzato. Grazie! –

+0

Buona presa. Ho aggiornato la domanda per includerla. – Aaron

risposta

20

Risolto, ma non so spiegare perché.

Scambia l'ordine delle due dichiarazioni. Impostare il colore, poi il riquadro:

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

Tutto funziona:

enter image description here

+0

Strano ma ha funzionato per me! –

+0

Questo è un hack. –

+1

Sì. Puoi dirci perché la tua risposta non è un trucco? Non spiega perché il colore non è rispettato. – Aaron

2

Prova ad aggiungere questo cellForRowAtIndexPath. Oltre a impostare SeparatorInsets del TableView.

cell.separatorInset = UIEdgeInsetsZero;

Dal UITableViewCell iOS Documenti:

@property (nonatomic) UIEdgeInsets separatorInset

I valori di offset per il contenuto della cella.

È possibile utilizzare questa proprietà per aggiungere spazio tra il contenuto della cella corrente e i bordi sinistro e destro della tabella. I valori di inserimento positivi spostano il contenuto della cella e il separatore di celle verso l'interno e lontano dai bordi del tavolo. I valori negativi vengono considerati come se l'inserto sia impostato su 0.