删除UISearchBar和阴影的顶部和底部边框?

我用UISearchBar创建了一个.xib。

我想删除顶部和底部边框,如下图所示: 图片

在顶部边框下面还有一个看起来像阴影的东西。

我曾尝试改变背景/色调等,但努力让它消失。

任何帮助都会受到欢迎,任何想法?

编辑

所以下面的代码允许我摆脱顶部和底部的边框,但不是奇怪的投影。 我添加了绿色背景以更清楚地显示它。

看到

另外,在文本框(而不是视图)周围添加边框的最佳方法是什么? 谢谢

// **这就是我要做的事情: https : //stackoverflow.com/questions/33107058/uiviewcontroller-sizing-as-maincontroller-within-uisplitviewcontroller

这是我正在使用的代码。

import UIKit class TopSearchViewController: UIView { var expanded: Int = 0 @IBOutlet weak var trailingConstraint: NSLayoutConstraint! @IBOutlet var contentView: UIView! @IBOutlet weak var searchBar: UISearchBar! @IBAction func advancedSearchButton(sender: AnyObject) { if expanded == 0 { self.layoutIfNeeded() UIView.animateWithDuration(0.1, animations: { self.trailingConstraint.constant = 200 self.layoutIfNeeded() }) expanded = 1 } else { self.layoutIfNeeded() UIView.animateWithDuration(0.1, animations: { self.trailingConstraint.constant = 25 self.layoutIfNeeded() }) expanded = 0 } } override init(frame: CGRect) { // for using CustomView in code super.init(frame: frame) self.commonInit() } required init(coder aDecoder: NSCoder) { // for using CustomView in IB super.init(coder: aDecoder) self.commonInit() } private func commonInit() { NSBundle.mainBundle().loadNibNamed("TopSearchViewController", owner: self, options: nil) contentView.frame = self.bounds contentView.autoresizingMask = .FlexibleHeight | .FlexibleWidth self.addSubview(contentView) self.searchBar.layer.borderWidth = 1 self.searchBar.layer.borderColor = UIColor.whiteColor().CGColor println(searchBar) for subview in searchBar.subviews { println("hello") var textField : UITextField if (subview.isKindOfClass(UITextField)) { textField = subview as! UITextField textField.borderStyle = .None textField.layer.borderWidth = 1 textField.layer.borderColor = UIColor.lightGrayColor().CGColor textField.layer.cornerRadius = 14 textField.background = nil; textField.backgroundColor = UIColor.whiteColor() } } } func viewDidLoad() { } } 

将bar的backgroundImage设置为空的 UIImage而不是 nil

 searchBar.backgroundImage = UIImage() 

您也可以设置barTintColor ,如下面评论中指定的那样。

尝试这个:

 searchBar.layer.borderWidth = 1 searchBar.layer.borderColor = UIColor.whiteColor().CGColor 

编辑:

我相信阴影是由内部UITextField引起的。 尝试使用以下代码:

 var textField : UITextField for subview in searchBar.subviews { if (subview.isKindOfClass(UITextField)) { textField = subview as! UITextField textField.borderStyle = .None textField.layer.borderWidth = 1 textField.layer.borderColor = UIColor.lightGrayColor().CGColor textField.layer.cornerRadius = 14 textField.background = nil; textField.backgroundColor = UIColor.whiteColor() } } 

我已经尝试了所有的答案,但他们没有删除UISearchBar的UITextfield内部的1px内部阴影。

我通过增加白色边框的宽度解决了这个问题。 它重叠在阴影上。

 searchBar.layer.borderWidth = 10 searchBar.layer.borderColor = UIColor.white.cgColor 

还有另一个技巧:

对于底部边框,您可以通过俯仰视图(例如:tableView)按-1像素覆盖它。

对于顶部边框,将其向上移动1个像素到导航栏下方也可以解决此问题。