2011-03-30 7 views
13

Nel mio UITableView, ho un tableHeaderView che dovrebbe ridimensionarsi in base al contenuto. Il ridimensionamento funziona bene, tuttavia, tableHeaderView oscura il primo paio di celle. Cambiando apparentemente il frame della tabellaHeaderView non riorganizza il resto della vista.Modifica dell'altezza di una tabellaHeaderView nasconde le celle

Ho già provato a chiamare [self.tableView layoutSubViews] e [self.tableView setNeedsLayout], ma anche quelli non aiutano. Ho anche provato a dare a tableHeaderView di Interface Builder una presa per cambiare la cornice, ma non riorganizza neanche il tableView.

Come posso modificare la dimensione di tableHeaderView, senza nascondere alcuna cella, riorganizzando il resto della tabellaView?

+1

prova a inserire '[myView setClipsToBounds: YES];' nel tuo 'viewForheaderInSection'poi puoi vedere quanta dimensione viene vista – Seega

risposta

4

Non so come hai creato UITableView, ma ho provato a crearne uno con tableHeaderView come te e sta ridimensionando.

ho creato una classe che eredita da UITableViewController

@interface MyTableViewController : UITableViewController { 

} 

@end 

e per l'attuazione, nel viewDidLoad, ho aggiunto:

UIView *header = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 100)]; 
[header setBackgroundColor:[UIColor redColor]]; 
self.tableView.tableHeaderView = header; 

enter image description here

+0

Ho creato il TableView tramite un TableViewController con un file di pennino. Qui ho aggiunto una vista per tableHeaderView e inserito un'etichetta che contiene il contenuto. Modifico il contenuto e la cornice dell'etichetta regolando un IBOutlet. Ma facendo lo stesso con tableHeaderView IBOutlet, non riorganizza la tableview. – SpacyRicochet

+2

Alla fine, ho usato questo metodo, senza creare la vista in Interface Builder. Grazie! – SpacyRicochet

+0

Ehi! Perché aggiungo le stesse linee a viewDidLoad e non riesco a vedere il blocco rosso sopra ?! –

22

provare a impostare la proprietà tableHeaderView del UITableView dopo aver ridimensionato il contenuto.

[self.tableView setTableHeaderView:self.myResizedTableHeaderView]; 

Risolto il problema per me. Spero che sia d'aiuto.

+3

specificatamente per me, ho posticipato il dimensionamento fino a viewWillAppear: poiché il mio controller è stato istanziato dinamicamente e quindi non aveva una geometria corretta da riferire fino ad allora. – qix