如何更改SearchBar边框颜色

时间:2016-02-14 19:20:35

标签: ios iphone swift uisearchbar

我想将Search Bar中的灰色边框颜色更改为白色。现在它看起来像是:

search bar

使用这行代码后我达到了这个效果,但“内部边框”仍为灰色:

var searchBar: UISearchController!

    self.searchBar.searchBar.backgroundColor = UIColor.whiteColor()
    self.searchBar.searchBar.layer.borderWidth = 3
    self.searchBar.searchBar.layer.borderColor = UIColor.whiteColor().CGColor
    self.searchBar.searchBar.layer.backgroundColor = UIColor.whiteColor().CGColor
    self.searchBar.searchBar.tintColor = UIColor(red: 0.3, green: 0.63, blue: 0.22, alpha: 1)

有人可以帮助我吗?

3 个答案:

答案 0 :(得分:7)

Result of the code below.

self.searchBar.searchBar.searchBarStyle = UISearchBarStyle.Prominent
self.searchBar.searchBar.translucent = false
let textFieldInsideSearchBar = self.searchBar.searchBar.valueForKey("searchField") as? UITextField
textFieldInsideSearchBar?.backgroundColor = UIColor.whiteColor()
self.searchBar.searchBar.barTintColor = UIColor.whiteColor()

上面的代码会为您提供所有白色搜索栏,但可能会在搜索栏的顶部和底部出现黑线,您可以从附件中看到。如果您看到黑线,如果您不想要它们,请更改;

self.searchBar.searchBar.barTintColor = UIColor.whiteColor()

self.searchBar.searchBar.backgroundImage = UIImage(named: "nameOfYourWhiteImage")

你会有一个干净的白色搜索栏。希望这能解决你的问题。祝你好运!

答案 1 :(得分:1)

您可以尝试 public IEnumerable<string> GetPictureSet(string id) { var path = $@"**folderDirectory**/{id}"; //this folder has 3 files in it return PhysicalFile(path, "image/jpeg"); } 以获得白色背景的干净外观,顶部或底部没有线条,而内部略灰以查看实际的搜索字段。

答案 2 :(得分:0)

我建议为此使用2个方便的扩展名:

extension UIImage {
    static func imageFromLayer (layer: CALayer) -> UIImage? {
        UIGraphicsBeginImageContext(layer.frame.size)
        guard let currentContext = UIGraphicsGetCurrentContext() else {return nil}
        layer.render(in: currentContext)
        let outputImage = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return outputImage
    }
}

extension UISearchBar {
    func setCustomBackgroundColor (color: UIColor) {
        let backgroundLayer = CALayer()
        backgroundLayer.frame = frame
        backgroundLayer.backgroundColor = color.cgColor
        if let image = UIImage.imageFromLayer(layer: backgroundLayer) {
            self.setBackgroundImage(image, for: .any, barMetrics: .default)
        }
    }
}

然后只使用:

self.searchBar.setCustomBackgroundColor (color: UIColor.white)