在iOS7.1中改变颜色,如何改变searchBar颜色?

在iOS7.0.3 – 7.0.6上,我的searchBar颜色是这样的金色/黄色: 在这里输入图像说明

但在iOS 7.1上,颜色变成这样:

在这里输入图像说明

我设置

searchBar.tintColor = [UIColor clearColor]; searchBar.backgroundColor = goldColor; searchBar.tintColor = [UIColor blackColor]; 

我尝试了很多方法,都失败了。 任何人都可以找出iOS 7.1中的变化吗?

==============我的修复程序===============

我通过覆盖searchBar上的视图来解决这个问题,并在这个新视图上添加search文本字段作为子视图。

我需要指出的是,黄金状态栏是searchBar的子视图,它的框架是CGRectMake(0, -20, 320, 20) ,它的背景色是黄金。

起初,我设定了这个:

 _searchBar.translucent = YES; _searchBar.scopeBarBackgroundImage = [self imageWithColor:UWGold]; 

看起来像这样:

在这里输入图像说明

然后,我展开视图覆盖状态栏,我改变了视图的frame.size.height + searchBar的高度,然后使用这一行:

 UITextField *textSearchField = [_searchBar valueForKey:@"_searchField"]; 

获取textSearchField,然后将此textSearchField添加到封面视图。

最后,searchBar就像在iOS 7.0上一样

在这里输入图像说明

不是一个好方法,我需要找出iOS 7.1上的变化,并使用正确的方式来实现这一点。

尝试这个:

 if(IOS_7) { self.searchBar.searchBarStyle = UISearchBarStyleMinimal; self.searchBar.backgroundImage = [UIImage imageWithColor:[UIColor redColor] cornerRadius:5.0f]; } 

希望这会帮助你。

在iOS 7/8上,以上答案都不适用于我。 这里有一些设置代码可以做到这一点:

 searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.view.frame), 44)]; searchBar.scopeButtonTitles = @[@"Scope1", @"Scope2"]; searchBar.selectedScopeButtonIndex = 0; searchBar.backgroundColor = [UIColor clearColor]; searchBar.barTintColor = [UIColor clearColor]; searchBar.translucent = YES; // SUPER IMPORTANT, REMOVING THIS MESSED UP THE SCOPE BAR // ONLY USE IMAGES, NOT BACKGROUND COLORS UIImage *searchBarBackgroundImage = [[UIImage imageNamed:@"SearchBarBackgroundImage"]; UIImage *scopeBarBackgroundImage = [[UIImage imageNamed:@"ScopeBarBackgroundImage"]; [searchBar setBackgroundImage:searchBarBackgroundImage forBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault]; searchBar.scopeBarBackgroundImage = scopeBarBackgroundImage; searchBar.tintColor = [UIColor whiteColor]; 

我用下一个方法来改变searchBar的backgroundColor

如@Ben Jacksonbuild议的 – 设置BackgroundImage

 [self.searchBar setBackgroundImage:[self imageWithColor:[UIColor blueColor]] forBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault]; 

2.根据devise改变文字领域

 NSArray *searchBarSubViews = [[self.searchBar.subviews objectAtIndex:0] subviews]; for( int i = 0; i < searchBarSubViews.count; i++) { if([[searchBarSubViews objectAtIndex:i] isKindOfClass:[UITextField class]]) { UITextField *searchTextField = (UITextField *)[searchBarSubViews objectAtIndex:i]; [searchTextField setTintColor:[UIColor blueColor]]; searchTextField.placeholder = @"Search"; searchTextField.backgroundColor = [UIColor whiteColor]; searchTextField.layer.borderColor = [UIColor blueColor].CGColor; searchTextField.layer.borderWidth = 1.0f; searchTextField.layer.cornerRadius = 8.0f; searchTextField.leftViewMode = UITextFieldViewModeNever; } } 

也是从颜色的图像 – 在这里

结果:

在这里输入图像说明

在这里输入图像说明