可以从UISearchBar中删除背景或边框吗?

时间:2012-06-07 17:10:52

标签: ios ios5 uisearchbar

我想得到这样的东西:

enter image description here

但是我无法删除原始背景(我正在使用iOS5)。 然而,苹果似乎做到了这一点:

enter image description here

我如何创造我想要的东西? 或者,没有选择,我唯一的选择是自定义UITextField?

感谢您的建议和想法!

编辑:第一次回复后,这就是我得到的:

enter image description here

有没有人如何在不使所有组件半透明改变其alpha值的情况下删除白色内部背景?顺便说一下,我可以用黑色改变白色吗?

3 个答案:

答案 0 :(得分:7)

试试这段代码,它对我有用

for (id img in yourSearchBar.subviews) {
        if ([img isKindOfClass:NSClassFromString(@"UISearchBarBackground")]) {
           [img removeFromSuperview];    
        }
    }

在上面的代码中,yourSearchBar是您要从中删除背景的搜索栏, 而for循环正在搜索UISearchBar

的背景图像

答案 1 :(得分:6)

你应该真的使用外观协议。您可以为UISearchBar的单个实例更改它,

UIImage *searchBg = [UIImage imageNamed:@"search_bar.png"];
[searchBar setBackgroundImage:searchBg];

或者如果你在不同的场景中有多个搜索栏,这将以每个实例为主题(但是在AppDelegate之类的地方调用它以确保在你看到它们之前都正确设置了这些栏。

UIImage *searchBg = [UIImage imageNamed:@"search_bar.png"];
[[UISearchBar appearance] setBackgroundImage:searchBg];

更新:好的,要更改搜索栏的背景,您应该使用以下其中一项,

searchBar的单个实例:

[searchBar setSearchFieldBackgroundImage:searchBg forState:UIControlStateNormal];

UISearchBars的所有实例:

[[UISearchBar appearance] setSearchFieldBackgroundImage:searchBg forState:UIControlStateNormal];

希望这有帮助。

答案 2 :(得分:1)

在iOS 7中,您只需设置:

searchBar.barTintColor = [UIColor clearColor];