2011-05-20 91 views

回答

4

我做到了!我不得不繼承UISearchBar並覆蓋layoutSubviews:

- (void)layoutSubviews { 
    UITextField *searchField; 
    NSUInteger numViews = [self.subviews count]; 
    for(int i = 0; i < numViews; i++) { 
     if([[self.subviews objectAtIndex:i] isKindOfClass:[UITextField class]]) { 
     searchField = [self.subviews objectAtIndex:i]; 
     } 
    } 
    if(!(searchField == nil)) { 
     searchField.textColor = [UIColor whiteColor]; 
     [searchField setBackground: [UIImage imageNamed:@"SearchBarBackground.png"] ]; 
     [searchField setBorderStyle:UITextBorderStyleNone]; 
    } 

    [super layoutSubviews]; 
} 

該圖像是一個完整的背景圖像!

0

我不認爲有一個API可以讓你改變背景顏色。該組件是UITextField的私有子類。即使我們可以使用黑客來達到效果,任何人依靠它都不太合適。

1

喬納森Naguin回答也不錯,但對於保持代碼的質量單行答案是

self.searchBar setSearchFieldBackgroundImage:[UIImage imageNamed:@"Searchbox.png"] forState:UIControlStateNormal]; 
+1

你所建議的方法是從iOS5中,當有人問了最新版本的iOS4 – 2013-07-05 07:57:39