如何实现没有边框的UISearchBar

时间:2012-10-20 17:17:46

标签: iphone objective-c ios uisearchbar

我正在尝试添加一个没有边框的UISearchBar,但它根本不起作用。

这就是我所拥有的:

在XIB文件中,我添加了UISearchBar。风格=黑色透明。 Tint =默认。没有选择任何选项(书签,取消按钮,范围栏等)。背景=默认。 Drawing = opaque(基本上是UISearchBar的默认设置)。

我有一个UISearchBar的属性 - searchBar。 在实现文件中,当视图加载时,我有:

[[self.searchBar.subviews objectAtIndex:0] removeFromSuperview];

但无论出于何种原因,背景(盒子周围的黑色边框)根本就没有了。 我试过[[self.searchBar.subviews objectAtIndex:0] setAlpha:0],但这根本不起作用。

请帮忙吗?

8 个答案:

答案 0 :(得分:5)

这对我有用

for (UIView * view in [[[self.searchBar subviews] objectAtIndex:0] subviews])
{
    if (![view isKindOfClass:[UITextField class]])
    {
        view .alpha = 0;
    }
}

答案 1 :(得分:4)

这是代码.....

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

快乐的编码:)

答案 2 :(得分:1)

怎么样:

[self.searchBar setOpaque:NO];

答案 3 :(得分:1)

[[_searchBar.subviews objectAtIndex:0] removeFromSuperview];
_searchBar.backgroundColor = [UIColor clearColor];

希望这对你有用,为我工作。

答案 4 :(得分:1)

这项工作仅适用于静态UISearchBar,如果您想显示搜索CancelButton,则在ios 5.0以上的设备中会出现此问题。 为此,您必须更改/设置UiSearchBar的BackgroundView。

答案 5 :(得分:1)

试试这个

 for (UIView * view in [mySearchBar subviews]) {
     if (![view isKindOfClass:[UITextField class]]) {
    view .alpha = 0;
     }
  }

答案 6 :(得分:1)

对于那些使用8.0及以上版本的人来说,最好的解决方案是简单地使用UIAppearance协议,执行以下操作:

[[UISearchBar appearance] setBackgroundImage:[UIImage new] forBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault];

您也可以使用以下命令在一个特定实例上执行此操作:

[mySearchBar setBackgroundImage:[UIImage new] forBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault];

答案 7 :(得分:0)

如果有人遇到与我相同的问题(见图)上面的代码可以修复

[self.tableView setContentInset:UIEdgeInsetsMake(-1, 0, 0, 0)];