在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; } }
也是从颜色的图像 – 在这里
结果: