3

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

这就是我所拥有的:

在 XIB 文件上,我添加了 UISearchBar。样式 = 黑色透明。色调 = 默认。未选择任何选项(书签、取消按钮、范围栏等)。背景 = 默认。绘图 = 不透明(基本上是 UISearchBar 的默认设置)。

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

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

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

请问有什么帮助吗?

4

8 回答 8

5

这对我有用

for (UIView * view in [[[self.searchBar subviews] objectAtIndex:0] subviews])
{
    if (![view isKindOfClass:[UITextField class]])
    {
        view .alpha = 0;
    }
}
于 2014-02-17T17:44:42.170 回答
4

这是代码......

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

快乐编码:)

于 2012-10-20T20:46:35.000 回答
1

怎么样:

[self.searchBar setOpaque:NO];
于 2012-10-20T17:25:07.620 回答
1
[[_searchBar.subviews objectAtIndex:0] removeFromSuperview];
_searchBar.backgroundColor = [UIColor clearColor];

希望这对你有用,它对我有用。

于 2012-10-20T17:27:29.213 回答
1

这仅在静态 UISearchBar 中有效,如果您想显示搜索取消按钮,则此问题发生在 ios 5.0 以上的设备中。为此,您必须更改/设置 UiSearchBar 的 BackgroundView。

于 2012-10-20T17:34:34.433 回答
1

试试这个

 for (UIView * view in [mySearchBar subviews]) {
     if (![view isKindOfClass:[UITextField class]]) {
    view .alpha = 0;
     }
  }
于 2012-10-20T18:01:50.180 回答
1

对于使用 8.0 及更高版本的用户,最好的解决方案是简单地使用该UIAppearance协议,方法是执行以下操作:

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

您还可以在一个特定实例上执行此操作:

[mySearchBar setBackgroundImage:[UIImage new] forBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault];
于 2015-06-07T10:42:00.623 回答
0

如果有人和我有同样的问题(见图)上面的代码可以解决

[self.tableView setContentInset:UIEdgeInsetsMake(-1, 0, 0, 0)];
于 2016-05-20T09:18:47.790 回答