2015-03-02 7 views
5

Ho aggiunto una barra di ricerca nella vista titelliva di un oggetto di navigazione. Ricerca lavori correttamente, ma quando si utilizza il controller di navigazione, lo sfondo della barra di ricerca cambia colore, come si vede qui sottocambia colore nella barra di navigazione

L'unico posto che mi tocco di colore è quello di cambiare il colore della voce di navigazione nello storyboard via Xcode

il relativo codice per mettere la barra di ricerca nella titleview

_searchController = [[UISearchController alloc] initWithSearchResultsController:nil]; 
[_searchController.searchBar sizeToFit]; 
self.navigationItem.titleView = _searchController.searchBar; 

Cosa sta causando questa colorazione?

enter image description here

cercando di cambiare il colore bartint con

[_searchController.searchBar setBarTintColor:[UIColor clearColor]]; 

ma sto ottenendo questo enter image description here

anche le cose che non funzionano sono

[_searchController.searchBar setBarTintColor:self.navigationController.navigationBar.tintColor]; 
_searchController.searchBar.backgroundColor = self.navigationController.navigationBar.tintColor; 

e con backgroundColor

sembra che questo colore sia in qualche modo diverso dalle impostazioni. Vedi qui con redcolor

enter image description here

+0

ho provato clearColor, non funziona –

+0

Come rendere l'immagine gif come hai caricato l'immagine dei problemi? –

+0

Io uso LICEcap per os x –

risposta

14

necessario impostare UISearchBartint color.

UISearchBar *search=[[UISearchBar alloc]initWithFrame:CGRectMake(10, 20, 100, 20)]; 
[search setBarTintColor:[UIColor clearColor]]; 
search.backgroundImage=[UIImage new]; 
self.navigationItem.titleView=search; 

Ora barra di navigazione si presenta come di seguito immagine:

enter image description here

+0

sfortunatamente, non funziona .. Ho aggiunto il gif per come si comporta con il codice nella modifica –

+0

impressionante !!! grazie mille !!!! Puoi spiegare perché funziona? –

+5

'search.backgroundImage = [UIImage new];' risolto per me; non è necessario impostare la proprietà 'barTintColor'. –

4

Per Swift utenti, è sufficiente aggiungere queste due linee: -

searchBar.barTintColor = UIColor.clearColor() 
searchBar.backgroundImage = UIImage() 
self.navigationItem.titleView = searchBar