UISearchController Search Bar Position Drops 64 Punkte
Die Suchleiste erscheint genau 64 Punkte zu niedrig:
Alle anderen Frames sind genau richtig.
Bearbeiten: - Es ist dasUISearchController
's Ansicht, die das falsche @ bekomorigin.y
. Es wird auf 64 gesetzt, wenn es 0 sein sollte. Wenn ich diese Methode hinzufüge:
- (void)didPresentSearchController:(UISearchController *)searchController
{
[super didPresentSearchController:searchController];
searchController.view.frame = CGRectMake(0, 0, searchController.view.frame.size.width, searchController.view.frame.size.height);
}
Dann richten sich die Ansichten aus. Allerdings ist es nervös, weil es springt. Wenn ich den Rahmen in @ ändewillPresentSearchController
es funktioniert nicht, da der Controller nach seiner Präsentation eine Art Layout erstellen muss.
Wenn ich SparkInspector verwende und den Rahmen desUISearchBarContainerView
Von Origin 64 (was es auf 0 gesetzt wird) ist das Problem behoben.
Hier ist meine relevante Konfiguration:
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];
Ich verwende den Interface Builder nicht, alles ist im Code konfiguriert. Ich bin mir sicher, dass die EinstellungdefinesPresentationContext
ist richtig
The VC sitzt in einem regulärenUINavigationController
, das sich in einem SplitViewController befindet (aber auch auf dem iPhone gibt es ein Problem).
Ich habe das Gefühl, dass mir eine einfache Konfigurationsoption für das @ fehlUINavigationBar
Ich habe auch einen anderen Controller, der ein benutzerdefiniertes Container View Controller-Modell verwendet, das komplexer ist und funktioniert.
Wenn ich @ einstel
self.definesPresentationContext = NO;
So jetzt dasUISearchBar
wird korrekt positioniert, aber der Präsentationskontext ist falsch, wodurch dasUISearchController
's Tabellenansicht, um die vollständige Ansicht einzunehmen.