我已閱讀過多篇文章,但它對我來說工作不正常。我正在使用最新的4.2 SDK。在導航控制器中默認隱藏UITableView搜索欄
我的代碼是
self.tableView.contentOffset = CGPointMake(0.0, 44.0);
這部分工作,其移動搜索欄了一點點,但是它不會完全隱藏。我已經嘗試將值增加到更大的值,並且這沒有影響到什麼!我在表的視圖控制器的viewDidLoad方法中調用此代碼。有沒有人有任何想法?
我已閱讀過多篇文章,但它對我來說工作不正常。我正在使用最新的4.2 SDK。在導航控制器中默認隱藏UITableView搜索欄
我的代碼是
self.tableView.contentOffset = CGPointMake(0.0, 44.0);
這部分工作,其移動搜索欄了一點點,但是它不會完全隱藏。我已經嘗試將值增加到更大的值,並且這沒有影響到什麼!我在表的視圖控制器的viewDidLoad方法中調用此代碼。有沒有人有任何想法?
self.tableView.contentOffset = CGPointMake(0.0, 44.0);
上面的代碼是實際可行的,但它需要的UITableView創建完所有的細胞後運行。我想這是另一個問題,但。
你是如何確定tableview已經完成創建所有單元格的?你能給我一些線索嗎?謝謝! – Brian 2015-06-05 08:55:52
另一種方法應該是...在viewDidLoad中調用:
self.tableView.contentInset = UIEdgeInsetsMake(-self.searchDisplayController.searchBar.frame.size.height, 0, 0, 0);
和實施endDragging委託方法:
-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
CGPoint offset = self.tableView.contentOffset;
CGFloat barHeight = self.searchDisplayController.searchBar.frame.size.height;
if (offset.y <= barHeight/2.0f) {
self.tableView.contentInset = UIEdgeInsetsZero;
} else {
self.tableView.contentInset = UIEdgeInsetsMake(-barHeight, 0, 0, 0);
}
self.tableView.contentOffset = offset;
}
設置的內容是刪除一些 「閃爍」
如果還你想要搜索欄堅持在頂部,執行didScroll這樣:
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
CGRect sbFrame = self.searchDisplayController.searchBar.frame;
sbFrame.origin.y = self.tableView.contentOffset.y;
if (sbFrame.origin.y > 0) {
sbFrame.origin.y = 0;
}
self.searchDisplayController.searchBar.frame = sbFrame;
}
我希望這會有所幫助(帶我幾天弄清楚:))
乾杯!
UPDATE:
由於@carbonr指出你應該在viewDidLoad中添加此行是因爲iOS7 +
self.edgesForExtendedLayout = UIRectEdgeNone;
您可以設置內部viewDidLoad
表視圖的初始範圍,因此搜索欄出現隱藏在開始。
你必須創建searchBar
屬性,然後使用下面的代碼:
- (void)viewDidLoad
{
//...
CGRect bounds = self.tableView.bounds;
bounds.origin.y = self.tableView.bounds.origin.y + searchBar.bounds.size.height;
self.tableView.bounds = bounds;
//...
}
我也有像你一樣的問題。下面的代碼解決了我的problem.Please添加代碼在你viewDidLoad中():
self.edgesForExtendedLayout = UIRectEdgeNone;
N:B:我在項目中使用的autoLayout。
對於其他人仍在尋找更新的解決方案,您可以通過here查看我的答案。
基本上你需要更新contentOffset
第一次調用viewDidLayoutSubviews
。
你能解釋你如何擺脫你的tableview嗎? – 2010-11-25 03:12:54
我想看看`wantsFullScreenLayout`。如果底部有一個酒吧,它將覆蓋桌面的一部分,您可以添加一個footerview 44px高(快速且簡單),或者您可以將tableview放置到一個父視圖中(稍微多點工作,但乾淨一點)。 – 2010-11-25 03:17:24