2012-12-12 39 views
1

我試圖自定義iOS上的UISearchBar的文本字段,但我遇到了問題。使用以下方法:iOS UISearchBar文本字段背景

[searchBar setSearchFieldBackgroundImage:searchFieldImage forState:UIControlStateNormal]; 

給我的圖像在文本字段中,但它是微小的。圖像只有40x15像素尺寸,用於拉伸。我創建的圖像如下:

UIImage *searchFieldImage = [[UIImage imageNamed:@"input_15x40.png"] 
        resizableImageWithCapInsets:UIEdgeInsetsMake(7, 19, 7, 20)]; 

但是,看起來這種外觀修改並不能拉伸圖像 - 只是照原樣。我怎樣才能用可伸縮圖像去定製UISearchBar的文本區域圖像?

編輯 我應該說,酒吧是水平拉伸,但它不是垂直拉伸,因此只有15px高度。

+0

的可能重複的[的UISearchBar:改變輸入字段的背景顏色(http://stackoverflow.com/questions/7229147/uisearchbar-changing-background-color-of-input-field) – BB9z

+0

號在當圖像不是垂直延伸到所需的高度時,這是一個問題,因爲圖像本身設置了包裝它的視圖的框架。因此,沒有垂直拉伸可以完成。另一個問題涉及到簡單地改變字段的顏色 - 兩個截然不同的問題和可能重疊的答案。 – bgoers

回答

4

我可以在代碼中看到的唯一問題是您創建名爲searchFieldImage的var並將其用作searchField。

此代碼爲我工作:

UIImage *searchFieldImage = [[UIImage imageNamed:@"input_15x40.png"] 
       resizableImageWithCapInsets:UIEdgeInsetsMake(7, 19, 7, 20)]; 

[searchBar setSearchFieldBackgroundImage:searchFieldImage forState:UIControlStateNormal]; 

-

編輯:

在高度,圖像不會拉伸,因爲圖像的高度將設置視圖的高度包裹它。

+0

編輯它,這是一個錯別字抱歉:P你有沒有嘗試過這個圖像被拉伸?出於某種原因,它橫向延伸,但不執行此代碼時垂直。出於測試的目的,我已經將這段代碼放在viewDidLoad中:UIViewController的 - 這可能是一個問題嗎? – bgoers

+0

我相信背景可以調整到高度上的圖像,對不起,最後一行讓我困惑,我明白酒吧水平拉伸而不是垂直拉伸,那麼我認爲你只需要水平拉伸。不是沒有垂直拉伸的圖像。 – ggrana

+0

啊,該死的。那麼好像我註定要在這裏 - 我不確定是否有方法來擴大垂直高度。我試圖提取搜索欄的UITextField子視圖並調整其框架,但這似乎不起作用。 – bgoers

0
let searchTextField = searchBar.valueForKey("_searchField") as? UITextField 
searchTextField?.backgroundColor = UIColor.redColor()