![](https://img.haomeiwen.com/i1200369/10b574a26d140a45.PNG)
QQ20181201-0.PNG
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var searchBar: UISearchBar!
override func viewDidLoad() {
super.viewDidLoad()
searchBar.delegate = self
searchBar.placeholder = "搜索"
// 设置背景色
searchBar.setBackgroundImage(self.imageWithColor(color: UIColor.orange), for: UIBarPosition.any, barMetrics: UIBarMetrics.default)
// 设置圆角
guard let searchField = searchBar.value(forKey: "searchField") as? UITextField else {
return
}
searchField.layer.cornerRadius = 14
searchField.layer.borderColor = UIColor.red.cgColor
searchField.layer.borderWidth = 0.5
searchField.layer.masksToBounds = true
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
searchBar.showsCancelButton = false
searchBar.resignFirstResponder()
}
// UIColor生成纯色图片
fileprivate func imageWithColor(color: UIColor, size: CGSize = CGSize(width: 55, height: 1)) -> UIImage {
let rect: CGRect = CGRect(origin: CGPoint.zero, size: size)
UIGraphicsBeginImageContext(rect.size)
let context: CGContext = UIGraphicsGetCurrentContext()!
context.setFillColor(color.cgColor)
context.fill(rect)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsGetCurrentContext()
return image!
}
}
extension ViewController: UISearchBarDelegate {
func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) {
// 设置取消按钮
UIView.animate(withDuration: 0.4) {
searchBar.showsCancelButton = true
for v in searchBar.subviews {
for _v in v.subviews {
if let _cls = NSClassFromString("UINavigationButton") {
if _v.isKind(of: _cls) {
guard let btn = _v as? UIButton else { return }
btn.setTitle("取消", for: .normal)
btn.setTitleColor(UIColor.red, for: .normal)
return
}
}
}
}
}
}
func searchBarTextDidEndEditing(_ searchBar: UISearchBar) {
searchBar.showsCancelButton = false
searchBar.resignFirstResponder()
}
func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
searchBar.showsCancelButton = false
searchBar.resignFirstResponder()
}
}
网友评论