本文主要介绍内容分为以下三个部分:
UISearchBar 的属性
UISearchBar 的方法
自定义 UISearchBar 的样式
1. UISearchBar 的属性
介绍之前先说一下 UISearchBar 的初始化方法:UISearchBar 是 UIView 的子类,它的初始化方法有三种:
- (instancetype)init
- (instancetype)initWithFrame:(CGRect)frame
- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder
这三个初始化方法是我们常见的初始化 UIView 以及它的子类的方法,比较常见,而且也不是介绍重点,所以这里不展开说明。
1.1 搜索框风格
属性
// 搜索框风格
@property(nonatomic) UIBarStyle barStyle;
UIBarStyle 有四种枚举值,但后两种已经禁用。
typedef NS_ENUM(NSInteger, UIBarStyle) {
UIBarStyleDefault //白色搜索框,灰色背景
UIBarStyleBlack //黑色搜索框,
UIBarStyleBlackOpaque = 1, // 禁用. Use UIBarStyleBlack
UIBarStyleBlackTranslucent = 2, // 禁用. Use UIBarStyleBlack and set the translucent property to YES
}
效果图:
UIBarStyleDefault 样式
UIBarStyleBlack样式
1.2 搜索的文本、搜索框顶部的提示信息、占位符
属性
// 搜索的文本
@property(nullable,nonatomic,copy) NSString *text;
// 搜索框顶部的提示信息
@property(nullable,nonatomic,copy) NSString *prompt;
// 占位符,默认nil, 若有值则在输入文本后消失
@property(nullable,nonatomic,copy) NSString *placeholder;
效果图:
prompt 和 placeholder
输入文本为 text 后 placeholder 消失
1.3 搜索框右侧的按钮
属性
// 搜索框右侧是否显示图书按钮
@property(nonatomic) BOOL showsBookmarkButton;
//搜索框右侧是否显示取消按钮
@property(nonatomic) BOOL showsCancelButton;
//搜索框右侧是否显示搜索结果按钮
@property(nonatomic) BOOL showsSearchResultsButton;
// 搜索结果按钮为选中状态
@property(nonatomic, getter=isSearchResultsButtonSelected) BOOL searchResultsButtonSelected;
以上四个属性的默认值都是 NO
效果图:
showsBookmarkButton = YES 效果
showsCancelButton = YES 效果
showsSearchResultsButton = YES 效果
searchResultsButtonSelected = YES 效果,要结合showsSearchResultsButton = YES使用
1.4 风格颜色、背景颜色
属性
// 风格颜色,可用于修改输入框的光标颜色,取消按钮和选择栏被选中时候都会变成设置的颜色
@property(null_resettable, nonatomic,strong) UIColor *tintColor;
// 搜索框背景颜色
@property(nullable, nonatomic,strong) UIColor *barTintColor;