SKSearchController 1.0.3

SKSearchController 1.0.3

WJunSHuo 维护。




  • JunsW

SKSearchController

Logo

Build Pass Language

对 UISearchController 的封装使得所有定制变得更加简单。

演示

下载并查看演示项目。

Demo

要求

  • iOS 8.0+
  • Swift 4.0+

安装

Cocoapods

Pod `SKSearchController`

说明书

源代码中下载两个.swift文件。

用法

1. 初始化。

初始化器与UISearchController完全相同
var searchController = SKSearchController(searchResultsController: nil)

2. 配置

必须在ViewDidAppear:中完成所有配置。否则,一些设置将不可用。


    func setupSearchController() {
        searchController.placeholder = "SKSearchController Demo"
        searchController.customizeCancelButton = { button in
            button.setAttributedTitle(NSAttributedString(string: "Punch", attributes: [.foregroundColor : UIColor.white, .font: UIFont.systemFont(ofSize: 15)]), for: .normal)
            button.backgroundColor = UIColor(hex: 0xEE7F79)
            button.layer.cornerRadius = 4
        }

        searchController.barBackgroundColor = UIColor(hex: 0xF9F9FA)
        
        searchController.leftIcon = UIImage(named: "football")
        searchController.leftIconColor =  UIColor(hex: 0xEE7F79)
        searchController.setRightBookmarkIcon(image: UIImage(named: "speaker"), color: UIColor(hex: 0xEE7F79), for: [UIControlState.normal])
        searchController.setRightClearIcon(image: UIImage(named: "x"), color: UIColor(hex: 0xEE7F79), for: [UIControlState.normal])
        
        searchController.cursorColor = UIColor(hex: 0x333333)
        searchController.textFieldTextColor = UIColor(hex: 0xbbbbbb)
        searchController.hideBorderLines = true
        searchController.textFieldBackgroundColor = UIColor(hex: 0xF9F9FA)
        
        searchController.searchTextDidChange = { searchBar, text in
            print("Keyword: \(text)")
        }
    }
    
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        // Do the settings here. Some settings could be unavailable otherwise.
        setupSearchController()
    }

文档

1. 属性

TextField

  • textFieldBackgroundColor:在searchControler's searchBar中文本框的背景颜色
  • textFieldCornerRadius:文本框的圆角半径
  • textFieldTextColor:文本框的文本颜色
  • textFieldFont:文本框的字体
  • cursorColor:通过改变搜索字段的高亮颜色来设置光标颜色
  • placeholder:设置搜索栏的占位符
  • attributedPlaceholder:设置文本框的属性占位符

取消按钮

  • showCancelButtonWhileEditing:确定是否显示取消按钮。
  • customizeCancelButton:(UIButton)->():闭包帮助你设置取消按钮
  • cencelButtonAttributedTitle属性:仅在customizeCancelButton块为nil时有效
  • cancelButtonColor属性:仅在customizeCancelButton块和cencelButtonAttributedTitle都为nil时有效
  • cancelButtonTitle属性:仅在customizeCancelButton块和cencelButtonAttributedTitle都为nil时有效

图标

  • leftIcon:为左侧搜索图标设置一张图片。
  • rightClearIcon:为输入时显示的清除图标设置一张图片。
  • rightBookmarkIcon:为搜索栏右侧的收藏夹图标设置一张图片。

  • hideBorderLines:是否隐藏searchBar的上下边框线。
  • barBackgroundColor:设置搜索栏的背景色,仅在iOS 11及以下版本中有效。
  • universalBackgoundColor:设置搜索栏和navigationBar的背景色。此属性在iOS 11及以下版本中还会将searchBar.isTranslucent设置为false
  • hideNavitionBarBottomLine:是否隐藏navigationBar的底部线条。

2. 方法

func setLeftIcon(image: UIImage?, color: UIColor?, for states: [UIControlState]):为左侧搜索图标设置一张图片。如果颜色不为nil,则图标将以该颜色渲染。

func setRightBookmarkIcon(image: UIImage?, color: UIColor?, for states: [UIControlState]):为右侧收藏夹图标设置一张图片。如果颜色不为nil,则图标将以该颜色渲染。

func setRightClearIcon(image: UIImage?, color: UIColor?, for states: [UIControlState]):为右侧清除图标设置一张图片。如果颜色不为nil,则图标将以该颜色渲染。

3. UISearchBar 代理

UISearchBar的代理方法已转换为以下闭包形式。

typealias EmptySearchBarHandler = (UISearchBar)->()
typealias BoolSearchBarHandler = (UISearchBar)->(Bool)

public var searchButtonClickHandler: EmptySearchBarHandler?
public var searchBarShouldBeginEditingHandler: BoolSearchBarHandler?
public var searchBarShouldEndEditingHandler: BoolSearchBarHandler?
public var searchBarCancelButtonClickHandler: EmptySearchBarHandler?

public var searchTextDidChange: ((UISearchBar, String)->())?
public var searchTextShouldChangeInRange: ((UISearchBar, NSRange, String)->(Bool))?

设置方式如下:

searchController.searchTextDidChange = 
{ searchBar, text in
        print("Content: \(text)")
}

简单且高效。

待办事项

  • Objective-C版本