2015-05-21 12 views
22

Devo ridurre lo spazio tra due sezioni di UITableView. Ho guardato a questo question ma la soluzione non consente la mia vista di intestazione personalizzata perché combina lo spazio del footer e dell'intestazione.Spazio tra le sezioni in UITableview

Questa è una foto di UITableView. Il colore nero è il colore di sfondo UITableView.

tableview screenshot

+0

Sono confuso su quello che stai cercando di fare. Vuoi rimuovere lo spazio nero tra la fine di una sezione e l'intestazione della sezione successiva? – Icaro

+0

Sì, desidero rimuovere lo spazio nero – Joel

+1

Xcode 6.0 e versioni successive richiede solo 'self.tableV.sectionHeaderHeight = 0.0; self.tableV.sectionFooterHeight = 0.0; ' –

risposta

65

Hai provato ignorare questa funzione:

override func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat { 
    return 0.00001 
    } 
+1

Sì, non funziona Credo che il valore minimo per quella funzione sia uno – Joel

+0

Aggiungo anche un altro metodo, prova ad eseguire l'override di entrambi, non l'ho provato ma dovrebbe funzionare – Icaro

+0

Quando aggiungo quel codice, il valore predefinito è il piè di pagina standard dimensione – Joel

29

Penso che si possa risolvere questo regolando l'altezza vista piè di pagina al suo minimo: in Storyboard o XIB. enter image description here

Non so cosa hai scritto nel tuo codice per l'altezza del piè di pagina. Scusa se sbaglio.

Eventuali duplicati di Hide footer view in UITableView

+0

Quando provo che la dimensione minima del footer è 1 che lascia ancora un gap 1point – Joel

+0

O è possibile cambiare il colore di quel footer nel colore della sezione dell'intestazione. In modo che il colore nero 1px può essere ignorato –

+0

@SudhinDavis hai ragione che c'è altezza del piè di pagina in xib ma se non vogliamo il footer, la risposta di Icaro http://stackoverflow.com/a/30386480/2849443 è corretta –

5

È necessario utilizzare il metodo heightForHeaderInSection per definire lo spazio tra il testo della cella di intestazione &. Puoi anche cambiarlo a seconda delle diverse sezioni per es. in alcune sezioni potrebbe essere necessario mostrare più distanza & sotto alcuni, non si vuole mostrare il divario. In tal caso puoi utilizzare CGFLOAT_MIN che è 0.000001f. Dare un esempio, come è possibile utilizzare la sezione diversa con diverse altezze di intestazione

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section 
{ 
    if (section == 0 || section == 2) 
    { 
     return 55.0; 
    } 
    else 
    { 
     return CGFLOAT_MIN; 
    } 
} 

speranza che vi aiuterà.

+0

Questo è sbagliato. heightForHeaderInSection definisce l'altezza dell'headViewView per la sezione, non lo spazio tra di loro, che è ciò che l'OP stava chiedendo. https://developer.apple.com/reference/uikit/uitableviewdelegate/1614855-tableview?language=objc – davidrynn

0

È possibile farlo implementando il delegato heightForHeaderInSection & heightForFooterInSection.

Il vaule di ritorno non deve essere 0, anche se SectionHeader o l'altezza di SectionFooter è 0, ha bisogno di un valore molto piccolo, prova CGFLOAT_MIN.

per il mio esempio:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{ 
if (section == [self.dataArray indexOfObject:self.bannerList]) { 
    return 46; 
} 
return CGFLOAT_MIN; 

}

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { 
    return CGFLOAT_MIN; 
} 
5

Per Swift 3

override func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat { 
    return CGFloat.leastNormalMagnitude 
} 
0

Anche questo può aiutare:

override func viewDidLoad() { 
    super.viewDidLoad() 
    tableView.sectionHeaderHeight = UITableViewAutomaticDimension 
} 
Problemi correlati