5

我想得到这样的东西:

在此处输入图像描述

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

在此处输入图像描述

我怎样才能创造出我想要的东西?或者,别无选择,我唯一的选择是自定义 UITextField?

感谢您的建议和想法!

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

在此处输入图像描述

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

4

3 回答 3

7

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

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

在上面的代码中yourSearchBar是你要移除背景的搜索栏,for循环是搜索UISearchBar的背景图片

于 2012-06-07T19:51:48.803 回答
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];

希望这可以帮助。

于 2012-06-08T00:16:21.700 回答
1

在 iOS 7 中,您可以设置:

searchBar.barTintColor = [UIColor clearColor];
于 2014-03-03T16:13:19.503 回答