2011-05-20 122 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