Ich implementiere eine UISearchBar auf der Spitze eines UITableView.UISearchBar zu UISearchDisplayController Übergang ist um 20px
In meinem ViewDidLoad habe ich self.edgesForExtendedLayout = UIRectEdgeNone
festgelegt.
So füge ich meine UISearchBar hinzu. Ich füge nur einen UISearchBar an den Header meiner UITableView und Einstellen des Gehalts Offset:
// Table View
self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, self.screenWidth, self.screenHeight)];
self.tableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
// Customize table appearance
[self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];
self.tableView.backgroundColor = [UIColor tableBackgroundColor];
// Define the table's datasource
self.tableView.dataSource = self;
self.tableView.delegate = self;
[self.view addSubview:self.tableView];
// Add a search bar to the header
self.searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, self.screenWidth, 44)];
self.searchBar.tintColor = [UIColor primaryBrandedColor];
self.searchBar.placeholder = NSLocalizedString(@"Search", "Search placeholder");
self.searchBar.backgroundImage = [UIImage imageNamed:@"searchBarBackground"];
[self.searchBar setBackgroundImage:[UIImage imageNamed:@"searchBarBackground"] forBarPosition:UIBarPositionTopAttached barMetrics:UIBarMetricsDefault];
self.searchBar.barTintColor = [UIColor clearColor];
self.searchBar.delegate = self;
[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setFont:[UIFont fontWithName:@"Whitney-Light" size:15]];
//Setup search display controller
self.searchController = [[HUMSearchDisplayController alloc] initWithSearchBar:self.searchBar contentsController:self];
self.searchController.delegate = self;
self.searchController.searchResultsDataSource = self;
self.searchController.searchResultsDelegate = self;
self.searchController.searchResultsTableView.separatorStyle = UITableViewCellSeparatorStyleNone;
// Add the searchBar and offset the table view so it's hidden by default.
self.tableView.tableHeaderView = self.searchBar;
self.tableView.contentOffset = CGPointMake(0.0, self.searchBar.frame.size.height);
Es scheint nicht, wie etwas aus dem Üblichen heraus ist hier, aber es gibt eine 20px Lücke auf dem ursprünglichen Tableview, wenn Der SearchDisplayController wird angezeigt. In diesem Beispiel habe ich SearchDisplayController subclassiert, um die Navigationsleiste nicht zu verbergen, um deutlicher zu machen, was passiert.
Ein Video-Capture des Übergangs: http://cl.ly/0y3L0Z1R1I0c/20pixels.mov
Die Dinge, die ich versucht habe:
- Ändern Sie den Rahmen meines UITableView auf searchDisplayControllerWillBeginSearch es bewegen 20px oben. Dies bricht den Übergang. http://cl.ly/033q0L3G0p1T/origin.mov
- Ändern Sie die Scroll-Offsets auf UITableView auf searchDisplayControllerWillBegin. Ähnlich bricht dies den Übergang.
- Ich versuchte, die UISearchBar manuell zu animieren, aber ich konnte auch nicht funktionieren.
Irgendwelche Ideen?
JA! Das nervt mich so sehr! Vielen Dank! – DonnaLea
Für die gleiche Lösung, ohne die Navigationsleiste durchscheinend zu machen, verwenden Sie die folgenden Schritte aus: 'self.edgesForExtendedLayout = UIRectEdgeAll;' ' self.automaticallyAdjustsScrollViewInsets = NO;' ' self.extendedLayoutIncludesOpaqueBars = YES;' – BreadicalMD
BreadicalMD: Brilliant! Du hast mich gerettet. Vielen Dank. –