2013-09-24 141 views
1
無形

用下面的代碼範圍條無形的(按鈕的工作,但不可見的 - 只是黑色的空間)的UISearchBar範圍酒吧iOS7

UISearchBar* searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, self.tableView.frame.size.width, 44 + (_showScope?40:0));]; 
searchBar.barStyle = UIBarStyleBlack; 

searchBar.scopeButtonTitles = [NSArray arrayWithObjects:@"string1", @"string2", nil]; 
searchBar.showsScopeBar = YES; 
searchBar.delegate = self; 

self.tableView.tableHeaderView = searchBar; 

工作正常iOS6的。有任何想法嗎?

+0

添加NSLog(@「%@」,NSStringFromCGRect(self.tableView.frame));我想你會發現一些有趣的事情(由於iOS7)。 (我會假設self.tableView.frame.size.width是0)。 –

+0

謝謝,但不是 - {{0,0},{320,548}} –

回答

2

這似乎是一種解決方法:

UISearchBar* searchBar = [[UISearchBar alloc] initWithFrame:CGRectZero]; 
searchBar.barStyle = UIBarStyleBlack; 

searchBar.scopeButtonTitles = [NSArray arrayWithObjects:@"string1", @"string2", nil]; 
searchBar.showsScopeBar = YES; 
searchBar.delegate = self; 

self.tableView.tableHeaderView = searchBar; 

searchBar.frame = CGRectMake(0, 0, self.tableView.frame.size.width, 44 + (_showScope?40:0)); 

真好!

+0

你試過設置搜索欄的背景圖片嗎?根據你的代碼,我添加[searchBar setBackgroundImage ......]。但不工作,我使用UISearchDisplayController添加搜索欄,並設置搜索欄背景,背景顯示,但範圍欄始終顯示爲黑色欄。請幫助http://stackoverflow.com/questions/19226503/ios-7-scope-bar-becomes-black-in-search-mode – JimZ

+0

這對我很好。謝謝。我不知道設置酒吧風格是否必要。我刪除了這一點,仍然設法克服了這個問題。 –

+0

取決於你想要酒吧黑或不,但沒有它不是解決方案的一部分... –

1

謝謝尼克H247讓我走上正軌。然而,他的解決方法給我帶來了另一個問題,即搜索結果列表顯示在搜索欄後面,使得我無法從列表的開頭選擇搜索結果。我通過設置之前將UISearchBar分配給tableHeaderView來解決這個問題。

UISearchBar* searchBar = [[UISearchBar alloc] initWithFrame:CGRectZero]; 
searchBar.barStyle = UIBarStyleBlack; 

searchBar.scopeButtonTitles = [NSArray arrayWithObjects:@"string1", @"string2", nil]; 
searchBar.showsScopeBar = YES; 
searchBar.delegate = self; 

searchBar.frame = CGRectMake(0, 0, self.tableView.frame.size.width, 44 + (_showScope?40:0)); 

self.tableView.tableHeaderView = searchBar;