2015-07-16 4 views
14

Ho una barra di ricerca di SearchController inserita in un tableHeaderView di UITableView. Quando tiro su per visualizzare la barra di ricerca o aggiornare la tabella, ottengo questo strano grigio più scuro che puoi vedere nell'immagine seguente, tra l'indicatore di attività di aggiornamento e la barra di ricerca (questo colore di sfondo persiste anche quando rimuovo l'aggiornamento view):Colore di sfondo per UISearchController in UITableView

enter image description here

tableView.tableHeaderView = searchController.searchBar 

ho provato a cambiare questo colore di sfondo in ogni modo che posso pensare:

tableView.backgroundColor = UIColor.redColor() 
tableView.tableHeaderView!.backgroundColor = UIColor.redColor() 
searchController.searchBar.backgroundColor = UIColor.redColor() 
view.backgroundColor = UIColor.redColor() 

Niente funziona. Questo grigio scuro non è uno dei colori personalizzati che utilizzo nel mio progetto quindi so che non l'ho impostato manualmente. Non appena avrò tirato fuori il controller di ricerca, tutto funziona come prima: quel grigio scuro è sostituito dal grigio più chiaro visto ovunque.

+0

searchController.view.backgroundColor = UIColor.redColor()? – streem

+0

In realtà non lo voglio in rosso, basta controllare cosa funziona. Nessuno di questi cambia quel colore di sfondo grigio scuro. –

+0

Prova questo potrebbe essere utile self.tableView.contentOffset = CGPointMake (0, self.searchDisplayController.searchBar.frame.size.height) – Karlos

risposta

30

Impostare backgroundView del UITableView per una nuova visione inutile:

self.tableView.backgroundView = [UIView new]; 

sembra illogico, ma funziona come un fascino :)

9

Prova questa:

[searchController.searchBar setBarTintColor:[UIColor blackColor]]; 
[searchController.searchBar setTintColor:[UIColor whiteColor]]; 

Spero che questo aiuti.

+0

Questo è proprio quello che stavo cercando. – dustinrwh

3

Basta impostare una vista vuota come backgroundview del UITableView

[self.tableView setBackgroundView:[[UIView alloc] initWithFrame:CGRectZero]]; 
10

La risposta corretta di Cameron E in Swift:

tableView.backgroundView = UIView()

Si noti che self.tableView.backgroundView = nil fa non lavoro.