2010-01-14 95 views
8

如何更改UISearchBar的寬度,當它位於表標題內時,使得部分索引不與文本字段重疊?我想重新創建您在手機應用的聯繫人視圖中找到的相同佈局。UISearchBar表部分索引標題重疊

回答

5

一個可能的解決方案是將自定義視圖添加到tableHeaderView。這是我做的:

searchBar是我在頭文件中聲明的UISearchBar。我創建了一個UIView併爲整個寬度添加了一個UINavigationBar,並在其上添加了簡短的UISearchBar。然後,我最終將UIView分配給tableHeaderView。

searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0.0, 0.0, 290.0, 44.0)]; 

UIView *customTableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 44.0)]; 
UINavigationBar *dummyNavigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 44.0)]; 
[customTableHeaderView addSubview:dummyNavigationBar]; 
[customTableHeaderView addSubview:searchBar]; 
[dummyNavigationBar release]; 

self.tableView.tableHeaderView = customTableHeaderView; 
[customTableHeaderView release]; 

更優雅的解決方案可以是使用contentStretch屬性來拉伸UISearchBar。我仍然需要嘗試一下並檢查它是否有效。

+0

設置** contentStretch **不適用於我。 – Sney 2010-04-11 11:44:34

+0

@Snej嗯..那麼這是我知道的唯一解決方案..謝謝你讓我知道:) – srik 2010-04-25 13:28:11

+0

工程在故事板以及。 – 2012-03-15 03:24:43

0

如果您使用UISearchDisplayController,所需的行爲將自動工作,如this answer中所述。

1

您的意思是屏幕右側的索引字母的A-Z溢出到搜索欄中,如此屏幕截圖所示,其中'A'和'B'出現在搜索欄的右邊緣?

​​

(一)我找不到任何方法來避免這個字母,超限問題。 Scott McCammon在這裏的答案與蘋果禁止的方法是一致的(即使我不確定它解決了這個問題)。

(b)我在iPod touch(第4代)的iOS 6.0.1中看到了蘋果的聯繫人應用程序中的此行爲。

(c)我想邏輯上它是一個功能而不是bug,因爲搜索欄位於表格視圖的標題中。標題是表視圖的一部分,並且像表格視圖的一部分一樣滾動,所以可能對繪製索引字母表是有意義的,因爲它會在表視圖的其餘部分進行繪製。

當你有範圍按鈕時,這個問題就變成了更多的問題。在範圍按鈕的右側沒有保留空間,所以索引字母在最右邊的按鈕上繪製。