SKSearchController
对 UISearchController 的封装使得所有定制变得更加简单。
演示
下载并查看演示项目。
要求
- 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版本