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

75

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

enter image description here

不是灰色,我想要像我的UINavigationBar一样改变颜色

如果我使用这段代码,就会出现这种情况

searchBar.backgroundColor = [UIColor redColor];

在这里输入图片描述

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


这只是我自己的问题还是你的图片无法显示? - user4951
5个回答

189

需要使用:

searchBar.barTintColor = [UIColor redColor];

enter image description here

感谢一切!


3
有没有办法去掉搜索栏中的透明度?因为颜色不是真正的红色! - Aladdin Gallas
5
你只需要将UISearchBar的translucent属性设置为NO,代码如下:[searchbar setTranslucent:NO]; - Pavan
我想给这个条形图添加圆角,我该怎么做? - Anish
1
这确实使得条形图呈现红色,但是仍然存在透明度/alpha。有没有办法消除透明度并获得纯色调? - Julian B.
4
将搜索栏样式设置为UISearchBarStyleMinimal,即可获得纯色。 - Jeroen de Leeuw
显示剩余2条评论

59

将背景图像设置为透明图像,就可以开始使用了。这也兼容于iOS 7 之前的版本。

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

3
如果您想在文本字段中实现极简设计并使用白色,则可以使用"clearColor"。这是一个非常好的答案。 - StackRunner

33
如果以上解决方法似乎无效,请确保您已将搜索栏样式设置为Minimal
[self.searchDisplayController.searchBar setSearchBarStyle:UISearchBarStyleMinimal];

对于简单的搜索栏

[self.searchBar setSearchBarStyle:UISearchBarStyleMinimal];

搜索栏样式也可以从界面构建器中设置为最小化


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
@franklsf95,这不会起作用,因为它是一个未记录的类。 - jbouaziz

4
如果UISearchBar是在MainStoryBoard中定义的,只需单击该UISearchBar并查看右侧可以处理的选项。 如果单击第四个选项卡(看起来像一个盾牌),您将获得一个栏色选项。在那里,您可以选择所需的UISearchBar颜色。
如果不是,则可以按以下方式进行编程:
    UISearchBar* sb =[[UISearchBar alloc] init];
    sb.backgroundColor=[UIColor redColor];

我希望这能帮到您!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接