OK, ci ho dedicato 8+ ore senza fortuna.UISearchController Search Bar Position Gocce 64 punti
La barra di ricerca vengono visualizzati esattamente 64 punti troppo basso:
Tutti gli altri fotogrammi sono esattamente corretto.
Modifica: - È la vista UISearchController
che sta sbagliando origin.y
. Esso viene impostato a 64, quando dovrebbe essere 0. Se aggiungo questo metodo:
- (void)didPresentSearchController:(UISearchController *)searchController
{
[super didPresentSearchController:searchController];
searchController.view.frame = CGRectMake(0, 0, searchController.view.frame.size.width, searchController.view.frame.size.height);
}
Poi i punti di vista allineare. Tuttavia, è janky perché salta. Se modifico il frame in willPresentSearchController
, non funziona, poiché il controller deve eseguire una sorta di layout dopo la sua presentazione.
Se utilizzo SparkInspector e modifica il frame di UISearchBarContainerView
dall'origine 64 (a cui viene impostato a, 0), il problema è risolto.
Ecco la mia configurazione rilevanti:
self.searchResultsController = [[GMSearchTableViewController alloc] init];
self.definesPresentationContext = YES;
self.searchController = [[UISearchController alloc] initWithSearchResultsController:self.searchResultsController];
self.searchController.dimsBackgroundDuringPresentation = YES;
self.searchController.hidesNavigationBarDuringPresentation = NO;
self.searchController.searchBar.frame = CGRectMake(0, 0, self.view.frame.size.width, 44);
[self.view addSubview:self.searchController.searchBar];
non sto usando Interface Builder, tutto è configurato nel codice. Sono sicuro che l'impostazione definesPresentationContext
sia corretta.
Il VC si trova in un normale UINavigationController
, che si trova all'interno di un SplitViewController (ma il problema esiste anche su iPhone).
Qualche idea? Mi sento come se mi mancasse una semplice opzione di configurazione per quanto riguarda lo UINavigationBar
Ho anche un controller diverso che utilizza un modello di Container View Controller personalizzato, che è più complesso e che funziona.
Quando ho creato
self.definesPresentationContext = NO;
Così ora la UISearchBar
ottiene posizionato correttamente, ma il contesto di presentazione è sbagliato, causando vista tabella s il UISearchController
' ad occupare la visualizzazione completa .
Grazie per avermi dato una soluzione nella tua domanda. Ha aiutato. se stesso.definePresentationContext = NO; – Coder