自定义UISearchBar:试图摆脱搜索栏下方的1px黑线

str*_*ave 43 iphone uisearchbar ipad ios

我的问题已在标题中指明:我想摆脱底部绘制的黑线UISearchBar.有任何想法吗?

这是我的意思的图像:

搜索栏有黑色底线

更新:

我认为线是部分UITableViewtableHeaderView.我仍然不知道如何删除它.

小智 73

试试这个

 searchBar.layer.borderWidth = 1;

 searchBar.layer.borderColor = [[UIColor lightGrayColor] CGColor];
Run Code Online (Sandbox Code Playgroud)

  • 适合我,在我的情况下我使用自定义条纹色调,所以我的代码如下(swift):`searchBar.layer.borderColor = searchBar.barTintColor?.CGColor` (5认同)

Oxc*_*cug 44

为什么:

所以,我已经深入研究了API,试图弄清楚为什么会这样.显然UISearchBar,无论谁编写API,都会将线光栅化到图像上并将其设置为图像backgroundImage.

解:

我提出了一个更简单的解决方案,如果你想设置backgroundColor和摆脱hairlines:

searchBar.backgroundColor = <#... some color #>
searchBar.backgroundImage = [UIImage new];
Run Code Online (Sandbox Code Playgroud)

或者,如果你只需要一个没有细节的背景图片:

searchBar.backgroundImage = <#... some image #>
Run Code Online (Sandbox Code Playgroud)


anc*_*jic 29

我的0.5px顶部和底部都有黑色水平线UISearchBar.到目前为止我摆脱它们的唯一方法是将其风格设置为Minimal:

mySearchBar.searchBarStyle = UISearchBarStyleMinimal;
Run Code Online (Sandbox Code Playgroud)

  • 这使得文本字段在serachbar内呈灰色 (2认同)

小智 19

我通过添加一个像这样的视图堆栈subview来解决这个问题searchBar:

CGRect rect = self.searchBar.frame;
UIView *lineView = [[UIView alloc]initWithFrame:CGRectMake(0, rect.size.height-2,rect.size.width, 2)];
lineView.backgroundColor = [UIColor whiteColor];
[self.searchBar addSubview:lineView];
Run Code Online (Sandbox Code Playgroud)

self.searchBarUISearchBar我的控制器类的指针.


swi*_*eek 10

解决方案

XCode 10.1 Swift 4.2

在此输入图像描述

  • 太棒了,你让我很开心。 (2认同)

VBa*_*thi 5

Swift 4.2:

controller.searchBar.layer.borderWidth = 1
controller.searchBar.layer.borderColor = UIColor(red: 255/255, green: 253/255, blue: 247/255, alpha: 1.0).cgColor
Run Code Online (Sandbox Code Playgroud)

答案基于Ayush的答案.