当前位置: > > > Swift - 修改搜索条(UISearchBar)中取消按钮的文字、颜色

Swift - 修改搜索条(UISearchBar)中取消按钮的文字、颜色

我们使用搜索栏(UISearchBar)时,如果将其设置为“Shows Cancel Button”后,输入框右侧会有个取消按钮(标题文字是Cancel,而且不会根据当前系统的语言环境切换)。

有时我们想要将这个按钮修改成其他文字,比如“搜索”。虽然 searchBar 不提供直接修改这个按钮文字的方法或属性,但我们可以换种方式来实现。
(本文代码已升级至Swift3)

1,修改searchBar取消按钮的文字
先获取到 searchBar 中的取消按钮,再设置这个按钮的 title 即可。
import UIKit

class ViewController: UIViewController {
    
    @IBOutlet weak var searchBar: UISearchBar!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let uiButton = searchBar.value(forKey: "cancelButton") as! UIButton
        uiButton.setTitle("搜索", for: .normal)
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

2,修改searchBar取消按钮的文字颜色
同样先获取到 searchBar 中的取消按钮,再设置这个按钮的 titleColor 即可。
import UIKit

class ViewController: UIViewController {
    
    @IBOutlet weak var searchBar: UISearchBar!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let uiButton = searchBar.value(forKey: "cancelButton") as! UIButton
        uiButton.setTitle("搜索", for: .normal)
        uiButton.setTitleColor(UIColor.orange,for: .normal)
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}
评论1
  • 1楼
    2016-06-01 12:18
    doubi321

    站长这个文字的颜色能改吗?settitlecolor,tintcolor和textlabel.color都试了,不起作用

    站长回复

    可以改,还是先得到取消按钮后再修改
    let uiButton = searchBar.valueForKey("cancelButton") as! UIButton
    uiButton.setTitleColor(UIColor.orangeColor(),forState: .Normal)