2015-07-20 14 views
7

Sto cercando di creare una barra di ricerca come questa:UISearchBar angoli personalizzati

enter image description here

ma sto notando che probabilmente sto andando a sostituire la barra di ricerca con la mia immagine, perché angoli barra di ricerca viene fuori sbagliato quando ho impostato:

self.searchController.searchBar.layer.cornerRadius = 50 // I've tried other numbers besides this too with no luck 
self.searchController.searchBar.clipsToBounds = true 

enter image description here

Se ho impostato questo:

self.searchController.searchBar.layer.cornerRadius = self.searchController.searchBar.bounds.height/2 

La barra di ricerca viene fuori in questo modo:

enter image description here

che ancora non è esatta come nell'immagine.

C'è un modo per sostituire il lato sinistro e destro del campo di testo con un'immagine in questo modo posso utilizzare gli angoli arrotondati dalla mia barra di ricerca personalizzata?

risposta

2

Il problema qui è che si imposta il raggio dell'angolo su UISearchBar, non il campo UIText all'interno di esso. Puoi fare una sorta di hack per ottenere UITextField, ma questo non è veramente raccomandato.

Come lei ha ricordato nella sua interrogazione, è necessario utilizzare immagini personalizzate e le modalità indicati qui: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UISearchBar_Class/#//apple_ref/doc/uid/TP40007529-CH3-SW40

1

Questo è il lavoro per me in rapida 3 iOS 10:

searchController.searchBar.layer.cornerRadius = 20 
    searchController.searchBar.clipsToBounds = true 

enter image description here

1

Sto usando questo codice UISearchBar ma è possibile utilizzare questo codice con UISearchController.

let searchBar = UISearchBar() 
       searchBar.sizeToFit() 
       searchBar.placeholder = "Search" 
       navigationItem.titleView = searchBar 

       if let textfield = searchBar.value(forKey: "searchField") as? UITextField { 
        textfield.textColor = UIColor.blue 
        if let backgroundview = textfield.subviews.first { 
         // Background color 
         backgroundview.backgroundColor = UIColor.white 
         // Rounded corner 
         backgroundview.layer.cornerRadius = 14; 
         backgroundview.clipsToBounds = true; 
        } 
       }