示例图
>>
封装
>>>
import UIKit
// UISearchBar
class CNSearchBar: UISearchBar {
typealias CNSearchBarShouldBeginEditingBlock = (String) -> Void
var BlockShouldBeginEditing: CNSearchBarShouldBeginEditingBlock?
// MARK: Properties
// MARK: LifeCycle
override init(frame: CGRect) {
super.init(frame: frame)
self.delegate = self
// 去掉顶部和底部黑线
self.backgroundImage = UIImage()
self.placeholder = "搜索"
self.sizeToFit()
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
// MARK: Extension
extension CNSearchBar: UISearchBarDelegate {
// 将要开始编辑
func searchBarShouldBeginEditing(_ searchBar: UISearchBar) -> Bool { return true }
// 已经开始编辑
func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) { }
// 将要结束编辑
func searchBarShouldEndEditing(_ searchBar: UISearchBar) -> Bool { return true }
// 已经结束编辑
func searchBarTextDidEndEditing(_ searchBar: UISearchBar) { }
// 内容已经改变
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String)
{
self.BlockShouldBeginEditing!(searchBar.text!)
}
// 取消按钮点击
func searchBarCancelButtonClicked(_ searchBar: UISearchBar)
{
searchBar.endEditing(true)
searchBar.setShowsCancelButton(false, animated: true)
}
// 搜索按钮点击
func searchBarSearchButtonClicked(_ searchBar: UISearchBar)
{
searchBar.setShowsCancelButton(false, animated: true)
searchBar.resignFirstResponder()
self.BlockShouldBeginEditing!(searchBar.text!)
}
}
使用时的个性化设置
>>>
let sear = CNSearchBar()
// 设置图标
sear.setImage(UIImage(named: "Scope_BusinessNo"), for: UISearchBar.Icon.search, state: UIControl.State.normal)
// 背景色
sear.backgroundColor = UIColor.white.withAlphaComponent(0.4)
// 光标的颜色
sear.tintColor = UIColor.white
//
if #available(iOS 13.0, *) {
sear.searchTextField.font = UIFont.adjustFontSize(ofSize: 12)
sear.searchTextField.textColor = UIColor.white
sear.searchTextField.backgroundColor = UIColor.clear
} else {
let textFiled = sear.value(forKey: "searchField") as! UITextField
textFiled.font = UIFont.adjustFontSize(ofSize: 12)
textFiled.textColor = UIColor.white
textFiled.backgroundColor = UIColor.clear
}
// 圆角
sear.layer.cornerRadius = 13
sear.clipsToBounds = true
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
// 设置占位符的字体和颜色
if #available(iOS 13.0, *) {
searchBar.searchTextField.attributedPlaceholder = NSAttributedString(string: "搜索", attributes: [NSAttributedString.Key.foregroundColor: UIColor.white, NSAttributedString.Key.font: UIFont.systemFont(ofSize: 12)])
} else {
let textFiled = searchBar.value(forKey: "searchField") as! UITextField
textFiled.attributedPlaceholder = NSAttributedString(string: "搜索", attributes: [NSAttributedString.Key.foregroundColor: UIColor.white, NSAttributedString.Key.font: UIFont.adjustFontSize(ofSize: 12)])
}
}
网友评论