cambiar el tamaño de UISearchDisplayController atenuador negro atenuado

¿Alguien sabe cómo cambiar el tamaño del negro atenuado excesivamente, una vez que hizo clic en la barra de búsqueda?

Tengo un problema cuando hago clic en cancelar, la tableview se gastará y luego se anima para desaparecer.

Utilizo esto para cambiar el tamaño de mi vista de tabla de resultados.

-(void)searchDisplayController:(UISearchDisplayController *)controller didShowSearchResultsTableView:(UITableView *)tableView { tableView.frame =fTableView.frame;//CGRectMake(26, 100, 280, 310); //fTableView.frame; tableView.backgroundColor = [UIColor colorWithRed:243.0/255.0 green:236.0/255.0 blue:212.0/255.0 alpha:1]; } 

cuando se hace clic en la barra de búsqueda, la superposition de gris está llena en lugar de mi tamaño definido.

introduzca la descripción de la imagen aquí

introduzca la descripción de la imagen aquí

cuando se hace clic en el button Cancelar, la vista volverá a gastarse. introduzca la descripción de la imagen aquí

Combiné varias respuestas para mover el marco superpuesto atenuado.

1: anular la class UISearchDisplayController

 @interface MySearchController : UISearchDisplayController 

2: anular la function setActive

 - (void)setActive:(BOOL)visible animated:(BOOL)animated { [super setActive: visible animated: animated]; //move the dimming part down for (UIView *subview in self.searchContentsController.view.subviews) { //NSLog(@"%@", NSStringFromClass([subview class])); if ([subview isKindOfClass:NSClassFromString(@"UISearchDisplayControllerContainerView")]) { CGRect frame = subview.frame; frame.origin.y += 10; subview.frame = frame; } } } 

3: cambiar el xib / storyboard Search Display Controller de UISearchDisplayController a MySearchController

Pensé que el buscador de DisplayDisplay tenía una vista de tabla separada, así que supongo que tendría que cambiar el tamaño de esa tabla.

Algo a lo largo de las líneas de: <yourSearchViewController>.view.frame =self.tableView.frame;

o si no lo tiene como variable de class, en un método que lo recibe como argumento, por ejemplo:

 -(void)searchDisplayController:(UISearchDisplayController *)controller didShowSearchResultsTableView:(UITableView *)tableView { controller.view.frame = self.tableView.frame; tableView.backgroundColor = [UIColor colorWithRed:243.0/255.0 green:236.0/255.0 blue:212.0/255.0 alpha:1]; } 

Alternativamente, es posible que desee subclass y anule localmente sus properties de vista.

¡Espero que esto ayude!

UISearchDisplayController posee su propia vista de tabla que no es tan fácil de dominar. Encontré algo como esto y todavía estoy buscando una solución mejor.

 -(void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller { [controller.searchResultsTableView setDelegate:self]; CGFloat gr = 12.0; controller.searchResultsTableView.backgroundColor = [UIColor colorWithRed:gr green:gr blue:gr alpha:0.0]; [controller.searchResultsTableView setSeparatorStyle:UITableViewCellSelectionStyleNone]; CGRect searchTableFrame = CGRectMake(7, 105, 305, 292); [controller.searchResultsTableView setFrame:searchTableFrame]; } 

El código anterior establece el background en transparente, pero parece ignorar silenciosamente el tamaño del marco.

EDIT: SOLVED Encontré la solución robusta para esto aquí . Esto me salvó la vida.