4

很长一段时间以来,我一直试图删除 UISearchBar 上方的有害行,但无济于事。它在浅色背景上看起来很暗或在深色背景上看起来很亮:

在此处输入图像描述 在此处输入图像描述

我看了这个问题,但它与分隔符或下拉刷新无关。当我最终决定放弃并寻求帮助时,我再次开始四处寻找并找到了一个非常简单(尽管可能不完全直观)的解决方案,所以我想我会分享它以防其他人面临同样的问题。我将搜索栏配置如下:

// I tried this drawing method
[self.searchBar setBackgroundImage:[[UIImage imageNamed:@"linen_bg_bar.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)]];
// and this one.
[self.searchBar setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"linen_bg_bar.png"]]];
// Same problem either way.

[self.searchBar setPlaceholder:NSLocalizedString(@"Filter", @"placeholder text in the search bar")];
[self.searchBar setSearchFieldBackgroundImage:[[UIImage imageNamed:@"linen_textfield_search.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(16, 16, 16, 16)] forState:UIControlStateNormal];
[self.searchBar setImage:[UIImage imageNamed:@"linen_icon_search.png"] forSearchBarIcon:UISearchBarIconSearch state:UIControlStateNormal];
self.table.tableHeaderView = self.searchBar;
[self.table setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"linen_bg_dark.png"]]];

根据这篇文章的建议,我尝试在其上绘图,但似乎绘图仍被渲染到线以下。

CGRect rect = self.searchBar.frame;
UIView *lineView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, rect.size.width, 2)];
lineView.backgroundColor = [UIColor redColor];

请参阅带有我的红色“掩盖”行的示例:

在此处输入图像描述

4

4 回答 4

10

不确定这是否可行,但它是有道理的,因为必须为覆盖视图设置负y 值。

searchBar.clipsToBounds = YES;
于 2013-03-13T15:14:14.913 回答
3

希望这可以帮助:

self.searchBar.layer.borderColor = Color.CGColor;
self.searchBar.layer.borderWidth = 1;

您可以在 searchController 中找到 searchBar 属性

于 2016-04-25T15:09:47.850 回答
2

在我的情况下,我正在创建一个UISearchBarin 代码并将其作为右栏按钮项放置在导航栏中。将背景图像设置为空图像会删除 1 像素线。

searchBar.backgroundImage = UIImage()
于 2017-01-20T09:15:09.080 回答
1

事实证明,我所要做的就是将覆盖线的框架调整为从搜索栏上方1pt 开始,然后我的搜索栏顶部有一条漂亮的 1pt 灰线。

CGRect rect = self.searchBar.frame;
UIView *lineView = [[UIView alloc] initWithFrame:CGRectMake(0, -1, rect.size.width, 1)];
lineView.backgroundColor = [UIColor colorWithHexString:@"353535" alpha:1.0];
[self.searchBar addSubview:lineView];

瞧。

于 2013-03-12T19:12:28.757 回答