美文网首页
UISearchBar的封装和自定义

UISearchBar的封装和自定义

作者: Eyes_cc | 来源:发表于2019-11-22 10:46 被阅读0次

    示例图>>

    示例图
    封装>>>
    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)])
      }
    }
    
    

    相关文章

      网友评论

          本文标题:UISearchBar的封装和自定义

          本文链接:https://www.haomeiwen.com/subject/dkefwctx.html