2010-02-07 16 views
7

Muchas de las búsquedas de tabla que veo en realidad son débiles (¿cambio alfa?) De la vista de tabla real cuando la barra de búsqueda se enfoca. Estoy tratando de implementar esto.UITableVer cómo "atenuar" la tabla real cuando UISearchbar obtiene el foco?

Cuando sobrecargo

- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar 

que estoy tratando de hacer algo como

self.tableView.alpha = .5f 

Pero está cambiando el alfa de la barra de búsqueda actual (si tengo SearchBar por sí solo) o cambiar el alpha de toda la tabla (incluyendo searchBar) si tengo searchBar debajo de la tablaView en IB.

¿Qué estoy haciendo mal aquí? ¿Cómo puedo simplemente atenuar la tabla y no todo?

Supongo que lo que realmente no logro entender es cómo todo esto se pone en capas en la pantalla.

EDITAR: La aplicación de contactos es un buen ejemplo de lo que estoy tratando de hacer.

Respuesta

10

La mayoría de estas aplicaciones simplemente arrojan una UIView de fondo negro en la parte superior de la tabla y la desvanecen (a un alfa de .5 o lo que sea) cuando la barra de búsqueda gana enfoque.

+0

¿Se puede publicar un código de ejemplo rápido? –

+4

[UIView beginAnimations: nil context: NULL]; [UIView setAnimationDuration: 0.5f]; UIView * blackView = [[UIView alloc] initWithFrame: CGRectMake (algo)]; [myTableView addSubview: blackView]; [UIView commitAnimations]; –

2

Si usa UISearchDisplayController, obtiene este comportamiento de forma gratuita.

0

Desde iOS 8 (y hasta al menos iOS 9.2) utilizaría un UISearchController. Desafortunadamente, actualmente el constructor de interfaz solo admite el UISearchDisplayController ahora obsoleto. Entonces, esta es la forma de agregarlo programáticamente a su controlador de vista de tabla, incluido el efecto tenue:

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 
} 
Cuestiones relacionadas