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

Posted

技术标签:

【中文标题】如何在 iOS7 中更改 UISearchBar 的背景颜色【英文标题】:How to change background color of UISearchBar in iOS7 【发布时间】:2013-10-18 12:39:32 【问题描述】:

ios7中如何改变UISearchBar的背景颜色?

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

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

searchBar.backgroundColor = [UIColor redColor];

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

【问题讨论】:

这只是我还是我看不到你的照片? 【参考方案1】:

需要使用:

searchBar.barTintColor = [UIColor redColor];

谢谢!

【讨论】:

这是一种消除搜索栏透明度的方法吗?因为颜色不是真正的红色! @AladdinGallas 您只需将 UISearchBar 的半透明属性设置为 NO,如下所示:[searchbar setTranslucent:NO]; 我想给这个栏添加圆角?我该怎么做? 这确实给了条一个红色的色调,但是这个色调仍然有透明度/alpha。有没有办法摆脱它并获得纯色作为色调? 将搜索栏样式设置为 UISearchBarStyleMinimal,而不是得到纯色。【参考方案2】:

将背景图像设置为清晰的图像,一切顺利。这也兼容 pre-ios 7。

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

【讨论】:

这是一个非常好的答案,如果您想在 textField 中使用白色的最小设计,请使用 clearColor【参考方案3】:

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

[self.searchDisplayController.searchBar setSearchBarStyle:UISearchBarStyleMinimal];

对于简单的搜索栏

[self.searchBar setSearchBarStyle:UISearchBarStyleMinimal];

搜索栏样式也可以从界面生成器设置为Minimal

【讨论】:

【参考方案4】:

这对我来说不是真的有用,或者有时,如果你也一样,试试这个

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

            

【讨论】:

if 子句可以简单地是if ([view isKindOfClass: UISearchBarBackground) @franklsf95 它不起作用,因为它是一个未记录的类。【参考方案5】:

如果 UISearchBar 是在 MainStoryBoard 中定义的,只需单击该 UISearchBar 并查看右侧可以处理的选项。 在那里,如果您单击第四个选项卡(看起来像盾牌的选项卡),您将获得一个 Bar Tint 选项。在那里你可以选择你想要的 UISearchBar 颜色。

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

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

我希望这会有所帮助!

【讨论】:

以上是关于如何在 iOS7 中更改 UISearchBar 的背景颜色的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS7 中更改 UISearchBar 的 inputView?

如何在 iOS 7 的 UISearchBar 中更改位置或隐藏放大镜图标?

如何在iOS 7中更改文本UISearchBar的取消按钮颜色?

如何在 iOS7 中右对齐 UISearchbar 的文本

在 iOS 9+ 中更改 UISearchBar 文本颜色

在 iOS 8 中更改 UISearchBar 取消按钮文本