如何将UISearchBar图标更改为自定义图像?

19

目前,我将默认的放大镜作为我的搜索栏图标。然而,我想把一个自定义的图像放在它的位置上,特别是这个图像:

自定义箭头图标

屏幕截图

我该如何将搜索栏默认图标更改为自定义图像?

4个回答

33

您可以使用setImage函数。

 searchBar.setImage(UIImage(named: "your image"), forSearchBarIcon: .Search, state: .Normal)

Swift3

searchBar.setImage(UIImage(named: "Image Name"), for: .search, state: .normal)

18

方法1:

正如luiyezheng所回答的,您可以更改UISearchBar iCon的图像。

UISearchBar.appearance().setImage(UIImage(named: "new_search_icon"), forSearchBarIcon: UISearchBarIcon.Search, state: UIControlState.Normal)

搜索图标颜色更改

屏幕截图

方法二:

您可以更改UISearchBar搜索图标的着色颜色。

let textFieldInsideSearchBar = searchBarCustom.valueForKey("searchField") as? UITextField
let imageV = textFieldInsideSearchBar?.leftView as! UIImageView
imageV.image = imageV.image?.imageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate)
imageV.tintColor = UIColor.purpleColor()

输出:

搜索图标图像色彩变更

screen shot


使用Swift 4.2:imageV.image = imageV.image?.withRenderingMode(UIImage.RenderingMode.alwaysTemplate) - garrettmaring

2

luiyezheng的答案非常好。

它的Swift 3版本是:

searchBar.setImage(UIImage(named: "Image Name"), for: .search, state: .normal)

1

Swift 5iOS 13+

这很简单,从iOS 13开始,UISearchBar有一个.searchTextField属性,我们可能想要进行一些调整。

只需将图像视图设置为其.leftView属性,如果需要,应用所需的色调颜色。

let image = UIImage(systemName: "location")
searchBar.searchTextField.leftView = UIImageView(image: image)
searchBar.searchTextField.leftView?.tintColor = .purple

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接