我想将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)
有人可以帮助我吗?
答案 0 :(得分:7)
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)