2012-06-07 11 views
5

Mi piacerebbe avere qualcosa di simile:Lo sfondo o i bordi possono essere rimossi da UISearchBar?

enter image description here

Ma non ero in grado di rimuovere sfondo originale (sto usando iOS5). Tuttavia, sembra di Apple ha fatto:

enter image description here

Come si crea quello che voglio? Oppure, non c'è scelta e l'unica alternativa che ho è personalizzare un UITextField?

Grazie per suggerimenti e idee!

EDIT: Dopo la prima risposta, questo è quello che ho ottenuto:

enter image description here

Qualcuno come posso rimuovere sfondo bianco interno senza fare tutto cambiando il suo valore alfa semitrasparente componente? A proposito, posso cambiare il colore bianco con il nero?

risposta

7

provare questo codice, Ha funzionato per me

for (id img in yourSearchBar.subviews) { 
     if ([img isKindOfClass:NSClassFromString(@"UISearchBarBackground")]) { 
      [img removeFromSuperview];  
     } 
    } 

Nel yourSearchBar codice di cui sopra è la barra di ricerca dal quale si desidera rimuovere lo sfondo, E il ciclo è alla ricerca per l'immagine della UISearchBar

sfondo
+0

Grazie per la risposta. Ieri ho provato e non ha funzionato, tuttavia oggi funziona. Sai come posso rimuovere lo sfondo interno bianco? Ho modificato la domanda con queste informazioni. – Ricardo

+1

manca questa riga per farlo funzionare pienamente: [[[searchBar subviews] objectAtIndex: 0] setHidden: YES]; da Hassan Shahzad in basso. – David

+0

Una risposta incredibile mi ha salvato la vita, grazie mille –

6

Si dovrebbe davvero utilizzare il protocollo di aspetto. È possibile cambiare per una singola istanza del UISearchBar,

UIImage *searchBg = [UIImage imageNamed:@"search_bar.png"]; 
[searchBar setBackgroundImage:searchBg]; 

o se si dispone di più barre di ricerca attraverso diverse scene Questo tema ogni istanza (ma chiamarlo da qualche parte sensibile come l'AppDelegate per garantire i bar sono tutti impostato correttamente prima di vedere qualcuno di loro

UIImage *searchBg = [UIImage imageNamed:@"search_bar.png"]; 
[[UISearchBar appearance] setBackgroundImage:searchBg]; 

Aggiornamento:. OK, per cambiare lo sfondo di una barra di ricerca è necessario utilizzare uno dei seguenti,

singola istanza di SearchBar:

[searchBar setSearchFieldBackgroundImage:searchBg forState:UIControlStateNormal]; 

Tutte le istanze di UISearchBars:

[[UISearchBar appearance] setSearchFieldBackgroundImage:searchBg forState:UIControlStateNormal]; 

Spero che questo aiuti.

1

In iOS 7 si può semplicemente impostare:

searchBar.barTintColor = [UIColor clearColor]; 
Problemi correlati