2011-11-03 6 views
7

qualcuno sa come ridimensionare eccessivamente il nero oscurato, una volta cliccata la barra di ricerca?ridimensiona UISearchDisplayController dimmer black overlay

ho problemi quando ho fatto clic su annullato, la vista tabella si spende quindi animata per scomparire.

lo utilizzo per ridimensionare la vista tabella dei risultati.

-(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]; 
} 

quando si fa clic sulla barra di ricerca, la sovrapposizione grigia è piena invece della dimensione definita.

enter image description here

enter image description here

se cliccato il pulsante Annulla, la vista si spendono di nuovo. enter image description here

+1

Questa risposta da Tom Swift ha risolto il mio problema: http://stackoverflow.com/a/4128659/675486 –

risposta

1

Pensavo che searchDisplayController possedesse una tabella separata, quindi suppongo che sia necessario ridimensionarlo.

Qualcosa sulla falsariga di: <yourSearchViewController>.view.frame =self.tableView.frame;

o se non ce l'hai come variabile di classe, in un metodo che riceve come argomento, ad esempio:

-(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]; 
} 

Alternativily si potrebbe desiderare di sottoclassi e sovrascrive le sue proprietà di visualizzazione localmente.

Spero che questo aiuti!

+0

Non c'è niente g come 'view' in' UISearchDisplayController'. La tua soluzione dà un errore. – thesummersign

+0

Era un'indicazione di ciò che dovresti cercare.Se trascorri qualche minuto in più a guardare le proprietà dei controller, noterai che _segue _ avere la vista specifica sotto il nome di 'searchResultsTableView'. fonte: http://developer.apple.com/library/ios/#documentation/uikit/reference/UISearchDisplayController_Class/Reference/Reference.html – Wolfert

+0

Ho esaminato il file '.h' del controller e ho trovato un' UIView * _view' ma sembra non essere esposto. – thesummersign

0

Il UISearchDisplayController possiede una propria vista tabella che non è così facile da domare. Mi sono imbattuto in qualcosa del genere e sto ancora cercando una soluzione migliore.

-(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]; 
} 

Il codice precedente imposta lo sfondo su trasparente ma sembra ignorare in silenzio le dimensioni del fotogramma.

EDIT: RISOLTO ho trovato la soluzione robusta per questo here. Questo mi ha salvato la vita.

+0

Inoltre, ho utilizzato celle personalizzate che prendono in giro l'aspetto come se si adattasse correttamente alla larghezza richiesta. – thesummersign

10

Ho combinato più risposte per spostare il riquadro di sovrapposizione in grigio.

1: ignorare UISearchDisplayController classe

@interface MySearchController : UISearchDisplayController 

2: override 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: cambiare il controller XI ter/storyboard Cerca Mostra da UISearchDisplayController a MySearchController

+0

niiiice. funziona per me – MrTristan

+0

Usalo per cambiare la larghezza. GRAZIE!!! – AlexanderZ

+0

Questa è la soluzione migliore per questo problema. Grazie! –