2013-08-04 15 views
16

Sto costruendo la schermata delle mie impostazioni e utilizzando una vista tabella raggruppata. Quando provo ad impostare le intestazioni, vedo la spaziatura sopra la mia vista di intestazione. Ho ricontrollato e ho superato l'altezza di visualizzazione corretta in -(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section.Altezza viste intestazione per UITableView raggruppato su iOS7

Ecco uno screenshot di questo comportamento: enter image description here

Potete vedere mio avviso con il titolo (vibrazione, modalità nascosta) in esso ed è più scuro il colore bg e lo spazio più luminoso sopra di esso.

+0

Allora, qual è la tua domanda? E questo è ancora NDA, dovresti chiedere nei forum degli sviluppatori. – Kevin

+0

Come sbarazzarsi dello spazio sopra la mia vista di intestazione. – Gal

risposta

73

Dopo molte ricerche, ho finalmente trovato una soluzione per questo. Il delegato di tableview deve implementare heightForFooterInSection e restituire un numero molto piccolo. Restituendo 0 di default alla stessa spaziatura che stava causando gli spazi extra.

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

Funziona ma preferirei restituire CGFLOAT_MIN – naudec

+1

Sì, il comportamento è abbastanza incoerente. Tutti i valori restituiscono l'altezza corretta ma 0, che restituisce un'altezza predefinita. Questo non è documentato e il comportamento sembra incoerente. Ho aperto un radar per questo. – viggio24

+0

@ viggio24 Grazie per quello! Si prega di tenerci informati dell'avanzamento. – iGranDav

1

Abbastanza sicuro che è solo un semplice trucco. Ma un modo semplice per farlo è scrivere questa funzione:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section 
{ 
     return 48.0f; // header height 
} 

per personalizzare la sua altezza.

Abbastanza sicuro che ci sono altri modi per farlo, che non conosco.

+3

grazie per aver risposto. Hai già implementato questo metodo. Rendo l'altezza corretta della vista dell'intestazione, ma otteniamo ancora la spaziatura in più di ~ 20 px sopra. – Gal

5

Prova questo:

- (void)viewWillAppear:(BOOL)animated{ 
    CGRect frame = self.tableView.tableHeaderView.frame; 
    frame.size.height = 1; 
    UIView *headerView = [[UIView alloc] initWithFrame:frame]; 
    [self.tableView setTableHeaderView:headerView]; 
} 
+0

Grazie per la risposta. Penso che questo influenzerà solo l'intestazione superiore della tabella e sto parlando dell'intestazione della sezione. – Gal

+0

Questa è in realtà una soluzione legit. Il sistema non aggiunge lo spazio aggiuntivo all'intestazione della prima sezione se esiste un 'tableHeaderView'. Personalmente preferisco questo trucco per scherzare con l'altezza del footer. –

0

Sembra che Apple ha preso una decisione consapevole di progettazione per rendere vista tabella raggruppati hanno spazio in più sulla parte superiore. Prova a regolare il contentInset di UITableView. Vedi my answer here

3

Questo è praticamente la stessa di risposta di Casey, tuttavia, è un po 'più pulito in quanto non richiede l'attuazione di un metodo delegato. Quando si imposta la visualizzazione tabella, è sufficiente impostare la proprietà sectionFooterHeight su 0. Realizza la stessa operazione con meno codice (e nessuna stranezza DBL_MIN). Versione

tableView.sectionFooterHeight = 0.0;

0

Swift 2.2:

func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat { 
    return CGFloat.min 
} 
Problemi correlati