UITableView come “dim” la tabella effettiva quando UISearchBar ottiene fuoco?
-
19-09-2019 - |
Domanda
Molte delle ricerche di tabella che vedo in realtà DIM (cambiamento alfa?) Del tableView effettiva in cui la barra di ricerca viene messo a fuoco. Sto cercando di implementare questa.
Quando ho sovraccaricare
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
che sto cercando di fare qualcosa di simile
self.tableView.alpha = .5f
Ma sta cambiando l'alfa del searchbar effettiva (se ho Searchbar da solo) o cambiando l'alfa dell'intera tabella (compresi Searchbar) se devo Searchbar sotto tableView in IB.
Che cosa sto facendo di sbagliato qui. Come posso solo Dim la tavola e non tutto.
Credo che quello che sto veramente non riuscendo a capire è come tutta questa roba viene stratificato sullo schermo.
EDIT: l'applicazione Contatti è un buon esempio di quello che sto cercando di fare.
Soluzione
La maggior parte tali applicazioni solo gettare un UIView nero-fondo sulla parte superiore del tavolo e dissolvenza in (per un alfa di 0,5 o altro) quando i guadagni barra di ricerca si concentrano.
Altri suggerimenti
Se si utilizza UISearchDisplayController
, si ottiene questo comportamento gratuitamente.
Dal momento che iOS 8 (e fino ad almeno iOS 9.2) si usa un UISearchController
. Purtroppo, attualmente il costruttore di interfaccia supporta solo il UISearchDisplayController
ormai deprecato. Quindi, questo è come aggiungere a livello di codice per il controller vista tabella, incluso l'effetto dim:
let searchController = UISearchController(searchResultsController: nil)
override func viewDidLoad() {
super.viewDidLoad()
// Use the current view controller to update the search results:
self.searchController.searchResultsUpdater = self
self.searchController.dimsBackgroundDuringPresentation = true
self.tableView.tableHeaderView = searchController.searchBar
}