所以在Xcode中我试图创建一个无缝的搜索栏。所以我试图复制像这样的东西
请注意状态栏与搜索栏的颜色相同。现在,这是我的方法的结果。
我所做的是添加一个视图以覆盖蓝色背景的默认状态栏。然后我添加了一个搜索栏并将其背景改为蓝色。出于某种原因,我最终在两者之间形成了一个黑色边框,这使得无缝的#34;设计。关于如何在Swift中删除黑色边框的任何想法?
答案 0 :(得分:26)
对于iOS 7 +:
searchBar.backgroundImage = UIImage()
否则这将适用于所有iOS版本:
searchBar.layer.borderWidth = 1
searchBar.layer.borderColor = thatBlueColor.CGColor
答案 1 :(得分:4)
在我的情况下,超出搜索栏的边缘需要关闭边缘也是导航栏。
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)
答案 2 :(得分:2)
在Xcode 8.3和Swift 3中
从搜索栏创建一个插座到ViewController(我为此示例调用了我的searchBarOutlet)。
在viewDidLoad下面插入以下内容。
self.searchBarOutlet.backgroundImage = UIImage()
您应该拥有以下内容:
override func viewDidLoad() {
super.viewDidLoad()
self.searchBarOutlet.backgroundImage = UIImage()
当您运行应用程序时,线条将消失(它们仍会在故事板上显示)。
答案 3 :(得分:1)
答案 4 :(得分:1)
删除顶部和底部默认边框的最佳解决方案是:
在viewDidLoad
中设置新的空搜索栏背景布局,例如:
searchBar.backgroundImage = UIImage()
答案 5 :(得分:1)
searchBar.barTintColor = UIColor.white
searchBar.setBackgroundImage(UIImage.init(), for: UIBarPosition.any, barMetrics: UIBarMetrics.default)
示例图片
导航栏和搜索栏背景颜色的最新示例代码:
导航栏颜色
self.navigationController?.navigationBar.barTintColor = .blue
搜索栏颜色
searchBarProperty.backgroundColor = self.navigationController?.navigationBar.barTintColor
答案 6 :(得分:0)
当我将statusBar和searchBar设置为半透明时,我遇到了相同的情况。 在这种情况下,我无法解决这里写的答案,但是可以通过以下方法解决。
(swift4代码)
class TransparentSearchBar: UISearchBar {
override init(frame: CGRect) {
super.init(frame: frame)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func layoutSubviews() {
super.layoutSubviews()
makeTransparentBackground()
}
private func makeTransparentBackground() {
for view in self.subviews {
view.backgroundColor = UIColor.clear
for subview in view.subviews {
if let imageview = subview as? UIImageView {
imageview.image = nil
}
}
}
}
}
viewDidLoad(statusBar)中的某个地方
let statusWindow = UIApplication.shared.value(forKey:"statusBarWindow") as! UIView
let statusBar = statusWindow.subviews[0] as UIView
statusBar.backgroundColor = UIColor.clear