如何在iOS7中更改UISearchBar的背景颜色


75

如何在iOS7中更改UISearchBar的背景颜色?

在此处输入图片说明

不是灰色,我想像uinavigationbar一样更改颜色

如果我使用这段代码,那就是结果

searchBar.backgroundColor = [UIColor redColor];

在此处输入图片说明

那不是红色!!!这种情况与导航栏的背景颜色完全相同。


这是我还是我看不到你的照片?
user4951 2014年

Answers:


187

需要使用:

searchBar.barTintColor = [UIColor redColor];

在此处输入图片说明

谢谢!


3
这是删除搜索栏中透明度的方法吗?因为颜色不是真的红色!
阿拉丁·加拉斯

5
@AladdinGallas只需将UISearchBar的半透明属性设置为NO,就像这样:[searchbar setTranslucent:NO];
Pavan

我想在此栏上添加圆角吗?我怎样才能做到这一点?
阿尼什(Anish)2014年

1
这确实使条形具有红色调,但是该色调仍然具有透明度/ alpha。有没有办法摆脱这种情况并获得纯色作为色调?
朱利安·B。

4
将搜索栏样式设置为UISearchBarStyleMinimal,即可获得纯色。
Jeroen 2014年

59

将背景图像设置为清晰的图像,一切就好了。这也与pre-ios 7兼容。

searchBar.backgroundImage = [[UIImage alloc] init]
searchBar.backgroundColor = [UIColor redColor];

3
如果您想要在textField中使用白色的最小设计,这是一个很好的答案,使用clearColor
StackRunner

33

如果上述解决方案似乎不起作用,请确保已将搜索栏样式设置为最小

[self.searchDisplayController.searchBar setSearchBarStyle:UISearchBarStyleMinimal];

对于简单的searchBar

[self.searchBar setSearchBarStyle:UISearchBarStyleMinimal];

SearchBar样式也可以从界面构建器设置为Minimal


6

这对我来说不是真正的工作,或者有时,如果您也尝试此操作

for (UIView *view in [[filterTextField.subviews objectAtIndex:0] subviews]){
                if ([NSStringFromClass([view class]) isEqualToString:@"UISearchBarBackground"])
                    view.alpha = 0;

            }

1
if子句可以简单地是if ([view isKindOfClass: UISearchBarBackground)
franklsf95 2014年

@ franklsf95由于它是未记录的类,因此无法使用。
jbouaziz 2015年

4

如果UISearchBar是在MainStoryBoard中定义的,则只需单击该UISearchBar并查看您可以在右侧处理的选项。在那边,如果您单击第四个选项卡(一个看起来像是盾牌的选项卡),则有一个“ Bar Tint”选项。在这里,您可以选择所需的UISearchBar颜色。

如果没有,我想您可以通过编程方式执行以下操作:

    UISearchBar* sb =[[UISearchBar alloc] init];
    sb.backgroundColor=[UIColor redColor];

我希望这有帮助!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.