取消setfill_【Swift】UISearchBar 的取消按钮属性

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, 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()

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值