如何在iOS7中自定义UISearchBar颜色?

时间:2014-01-21 16:18:11

标签: ios7 uisearchbar

我搜索了很多但是找不到合适的答案。

我想更改内部圆角视图的backgroundColor。

就像Tweetbot在搜索点击上一样,它从灰色变为蓝色。

据我所知,我可能需要迭代子视图,但我不知道如何获得正确的对象。 (对于backgroundColor,它不是_searchLabel)

这个元素的默认对比度太差了,甚至都不好笑:(

3 个答案:

答案 0 :(得分:0)

好的,这很有效。但请注意,您无法事先设置UIBarStyle,否则它将覆盖所有内容。 https://stackoverflow.com/a/19836215/1252720

答案 1 :(得分:0)

如果您仍在寻找更好的答案,我只是偶然发现了这个主题并找到了一个很好的解决方案:UISearchBar text color change in iOS 7

如果你看一下Sandeep-Systematix给出的答案(不是接受的答案,但是下面的答案),他提到了一种非常干净的方法来修改任何类别中的子视图:

[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setTextColor:[UIColor blueColor]];

您可以在Apple的文档中了解更多相关信息:https://developer.apple.com/library/ios/documentation/uikit/reference/UIAppearance_Protocol/Reference/Reference.html

那就是说,您需要更改UISearchBar中UITextField的白色圆角背景:

[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setBackgroundColor:[UIColor redColor]];

现在,如果您需要创建具有不同样式的不同UISearchBars,您只需创建一个UISearchBar的子类,您最终会得到这样的结果:

[[UITextField appearanceWhenContainedIn:[MyCustomSearchBar class], nil] setBackgroundColor:[UIColor redColor]];

答案 2 :(得分:-1)

使用此代码。

_searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.contentView.bounds.size.width, 44.0f)];
_searchBar.autoresizingMask = UIViewAutoresizingFlexibleWidth;
_searchBar.delegate         = self;
[self.view addSubView:_searchBar];

UITextField *txfSearchField = [_searchBar valueForKey:@"_searchField"];
txfSearchField.backgroundColor = [UIColor redColor];