删除视图和搜索栏之间的边框

所以在Xcode中我正在尝试创建一个无缝搜索栏。 所以我试图复制这样的东西

在此处输入图像描述

请注意状态栏与搜索栏的颜色相同。 现在这是我的方法的结果。

在此处输入图像描述

我所做的是添加一个视图来掩盖蓝色背景的默认状态栏。 然后我添加了一个搜索栏并将其背景更改为蓝色。 出于某种原因,我最终在两者之间形成了黑色边框,这破坏了“无缝”设计。 关于如何在Swift中删除黑色边框的任何想法?

适用于iOS 7+:

searchBar.backgroundImage = UIImage() 

否则,这适用于所有iOS版本:

 searchBar.layer.borderWidth = 1 searchBar.layer.borderColor = thatBlueColor.CGColor 

在我的情况下,超出搜索栏的边缘需要边缘也关闭导航栏。

C#代码:

 NavigationController.NavigationBar.ShadowImage = new UIImage(); NavigationController.NavigationBar.SetBackgroundImage (new UIImage (), UIBarMetrics.Default); 

SWIFT代码:

 self.navigationController.navigationBar.shadowImage = UIImage() self.navigationController.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: .Default) 

在Xcode 8.3和Swift 3中

  1. 从搜索栏创建一个sockets到ViewController(我为此示例调用了我的searchBarOutlet)。

  2. 在viewDidLoad下面插入以下内容。

    self.searchBarOutlet.backgroundImage = UIImage()

你应该有以下几点:

  override func viewDidLoad() { super.viewDidLoad() self.searchBarOutlet.backgroundImage = UIImage() 

当您运行应用程序时,线条将消失(它们仍将在故事板上显示)。

删除顶部和底部默认边框的最佳解决方案是:

要在viewDidLoad设置新的空searchBar背景布局,例如:

 searchBar.backgroundImage = UIImage() 

斯威夫特4

 searchBar.barTintColor = UIColor.white searchBar.setBackgroundImage(UIImage.init(), for: UIBarPosition.any, barMetrics: UIBarMetrics.default) 

样本图片

在此处输入图像描述

Upate导航栏和搜索栏背景颜色的示例代码:

导航栏颜色

 self.navigationController?.navigationBar.barTintColor = .blue 

搜索栏颜色

 searchBarProperty.backgroundColor = self.navigationController?.navigationBar.barTintColor 

注意:导航栏和搜索栏颜色必须相同。

带有蓝色导航栏和蓝色搜索栏的示例图像 在此处输入图像描述

我发现这些答案比他们需要的更复杂。 您可以修改将searchBar视图和另一个视图绑定到-1pts的约束,以便它与searchBar边距的高度完全重叠。