Sto implementando un UISearchBar nella parte superiore di un UITableView.UISearchBar to UISearchDisplayController transizione è disattivata da 20px
Nel mio ViewDidLoad ho impostato self.edgesForExtendedLayout = UIRectEdgeNone
.
Ecco come aggiungere la mia UISearchBar. Sto solo l'aggiunta di un UISearchBar all'intestazione della mia UITableView e regolando l'offset contenuti:
// 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);
Non sembra come niente è fuori dal comune qui, ma c'è un gap 20px sul Tableview originale quando viene visualizzato SearchDisplayController. In questo esempio ho sottocloppato SearchDisplayController per non nascondere il NavigationBar per rendere più chiaro cosa sta succedendo.
una cattura video della transizione: http://cl.ly/0y3L0Z1R1I0c/20pixels.mov
Le cose che ho provato:
- Cambiare la cornice della mia UITableView su searchDisplayControllerWillBeginSearch per spostarlo in alto 20px. Questo rompe la transizione. http://cl.ly/033q0L3G0p1T/origin.mov
- Modificare gli offset di scorrimento su UITableView su searchDisplayControllerWillBegin. Allo stesso modo, questo interrompe la transizione.
- Ho cercato di animare manualmente UISearchBar ma non sono riuscito a farlo funzionare.
Qualche idea?
SÌ! Questo mi ha infastidito così tanto! Grazie! – DonnaLea
Per la stessa soluzione senza fare la barra di navigazione traslucido, utilizzare il seguente: 'self.edgesForExtendedLayout = UIRectEdgeAll;' ' self.automaticallyAdjustsScrollViewInsets = NO;' ' self.extendedLayoutIncludesOpaqueBars = YES;' – BreadicalMD
BreadicalMD: Brilliant! mi hai salvato. Grazie. –