我正在UITableView顶部实现一个UISearchBar。
在我的ViewDidLoad中,我设置了
以下是我添加UISearchBar的方法。我只是将UISearchBar添加到UITableView的标头并调整内容偏移量:
在我的ViewDidLoad中,我设置了
self.edgesForExtendedLayout = UIRectEdgeNone
。以下是我添加UISearchBar的方法。我只是将UISearchBar添加到UITableView的标头并调整内容偏移量:
// 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);
这里似乎没有什么异常,但是在显示SearchDisplayController时,原始的tableview上有一个20像素的间隙。在这个例子中,我创建了一个子类SearchDisplayController,不隐藏NavigationBar,以便更清楚地了解发生了什么。
一个转换的视频捕获:http://cl.ly/0y3L0Z1R1I0c/20pixels.mov
我尝试过的事情:
- 在searchDisplayControllerWillBeginSearch时更改我的UITableView的框架以将其上移20px。这会破坏转换。http://cl.ly/033q0L3G0p1T/origin.mov
- 更改searchDisplayControllerWillBegin上的UITableView上的滚动偏移量。同样,这会破坏转换。
- 尝试手动动画UISearchBar,但我也无法使其工作。
有什么想法吗?
self.edgesForExtendedLayout = UIRectEdgeAll;
self.automaticallyAdjustsScrollViewInsets = NO;
self.extendedLayoutIncludesOpaqueBars = YES;
- BreadicalMD