首先,使用故事板。将 UIView 对象添加到表头。然后,将您的 UISearchBar 放在 UIView 中。此外,您需要将表格视图控制器设置为搜索栏的代表。不要使用 scrollViewDidScroll 方法(或类似方法),而是将浮动代码放入 viewDidLayoutSubviews。这适用于所有情况。我还调用了bringToFront,因为我使用了自定义部分标题并且需要确保表格标题视图始终保持在顶部。最上面的 UIEdgeInset 是 tableHeaderView 的高度。
viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
CGRect frame=self.tableView.tableHeaderView.frame;
frame.origin.y=self.tableView.contentOffset.y;
if (frame.origin.y <= 0) {
frame.origin.y=0;
[self.tableView setContentInset:UIEdgeInsetsMake(0.0, 0.0, 0.0, 0.0)];
} else {
[self.tableView setContentInset:UIEdgeInsetsMake(48.0, 0.0, 0.0, 0.0)];
}
[self.tableView.tableHeaderView setFrame:frame];
[self.tableView bringSubviewToFront:self.tableView.tableHeaderView];
}