首先,使用故事板。向表頭添加一個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];
}
我有同樣的問題(我正在使用UITableViewController)。我將searchBar添加爲tableHeaderView,它不會顯示在ios5中。我會嘗試你的建議。但是,請你讓我知道這兩個實現的主要區別是什麼。 – ravi