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

Bri*_*rsh 21 ios swift

我用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() {

    }
}
Run Code Online (Sandbox Code Playgroud)

NRi*_*itH 59

设置栏的backgroundImage一个空的 UIImage,没有 nil:

searchBar.backgroundImage = UIImage()
Run Code Online (Sandbox Code Playgroud)

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


and*_*ndy 11

使用 Xcode 11,在 Storyboard 中,您可以将“搜索样式”设置为“最小”。

在代码中: searchBar.searchBarStyle = .minimal

  • 帮助删除顶部和底部边框。谢谢 ! (2认同)
  • 这为我删除了搜索栏和“选定范围”按钮附件视图之间出现的边框,当视图以较大的辅助功能类型大小显示时,此处答案中列出的其他方法不会隐藏该边框。那谢谢啦! (2认同)

Wil*_*Han 7

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

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

searchBar.layer.borderWidth = 10
searchBar.layer.borderColor = UIColor.white.cgColor
Run Code Online (Sandbox Code Playgroud)


Rak*_*igo 7

# 方法一

感谢@andrewlundy,故事板方法是这样的。(Xcode 11.*)

  1. 在故事板中选择 UISearch (假设:您已经将 UISearch Bar 拖到您的 UIView/UIViewController 中)

  2. 转到Attribute Inspector,你会看到Search Style

  3. Minimal从下拉列表中选择Search Style。

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

就是这样...

# 方法2

否则,如果您想以编程方式快速执行此操作

  1. 在 ViewController swift 文件中创建一个IBOutletUISearch

  2. searchBar.searchBarStyle = .minimal

在这里代替searchBar, 放your UISearch outlet's name


Abh*_*nav 5

尝试这个:

searchBar.layer.borderWidth = 1
searchBar.layer.borderColor = UIColor.whiteColor().CGColor
Run Code Online (Sandbox Code Playgroud)

编辑:

我相信阴影是由内在造成的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()
    }
}
Run Code Online (Sandbox Code Playgroud)