//
// ZJSearchBar.h
// ZJSearchBar
//
// Created by 张建 on 2017/4/22.
// Copyright © 2017年 张建. All rights reserved.
//
#import
//自定义UISearchBar,方便项目中的使用。后续可自行进行功能添加。
@interface ZJSearchBar : UISearchBar
//搜索框
@property (nonatomic, strong)UITextField *searchBarTF;
//搜索框的背景,默认是灰色哦。系统色. 是否隐藏显示
@property (nonatomic, assign)BOOL hideSearchBarBackgroundImage;
//输入框中自定义的光标颜色
@property (nonatomic, strong)UIColor *cursorColor;
//输入框中清除按钮的图片
@property (nonatomic, strong)UIImage *clearButtonImage;
//取消按钮(当showCancleButton = YES时,才可以得到)
@property (nonatomic, strong)UIButton *cancleButton;
//设置输入框中🔍和提示文字 是否居中。(NO是不居中)
@property (nonatomic, assign, setter = setHasCentredPlaceholder:) BOOL hasCentredPlaceholder;
@end
//
// ZJSearchBar.m
// ZJSearchBar
//
// Created by 张建 on 2017/4/22.
// Copyright © 2017年 张建. All rights reserved.
//
#import "ZJSearchBar.h"
@implementation ZJSearchBar
//设置输入框
- (UITextField *)searchBarTF{
//获取输入框
_searchBarTF = [self valueForKey:@"searchField"];
return _searchBarTF;
}
//设置输入框中的光标的颜色,可以自定义的哦
- (void)setCursorColor:(UIColor *)cursorColor{
if (cursorColor) {
_cursorColor = cursorColor;
//1.获取输入框
UITextField *searchField = self.searchBarTF;
if (searchField) {
//2.光标颜色
[searchField setTintColor:cursorColor];
}
}
}
//设置清除按钮的图标
- (void)setClearButtonImage:(UIImage *)clearButtonImage{
if (clearButtonImage) {
_clearButtonImage = clearButtonImage;
//1.获取输入框
UITextField *searchField = self.searchBarTF;
if (searchField) {
//清除按钮的图片
UIButton *button = [searchField valueForKey:@"_clearButton"];
[button setImage:clearButtonImage forState:UIControlStateNormal];
searchField.clearButtonMode = UITextFieldViewModeWhileEditing;
}
}
}
//隐藏背景图
- (void)setHideSearchBarBackgroundImage:(BOOL)hideSearchBarBackgroundImage{
if (hideSearchBarBackgroundImage) {
_hideSearchBarBackgroundImage = hideSearchBarBackgroundImage;
self.backgroundImage = [[UIImage alloc]init];
}
}
//获取取消的按钮
- (UIButton *)cancleButton{
self.showsCancelButton = YES;
for (UIView *view in [[self.subviews lastObject]subviews]) {
if ([view isKindOfClass:[UIButton class]]) {
_cancleButton = (UIButton *)view;
}
}
return _cancleButton;
}
- (instancetype)initWithFrame:(CGRect)frame
{
if ((self = [super initWithFrame:frame]))
{
self.hasCentredPlaceholder = YES;
}
return self;
}
//设置搜索框中搜索🔍和提示文字的位置 (居左)
- (void)setHasCentredPlaceholder:(BOOL)hasCentredPlaceholder
{
_hasCentredPlaceholder = hasCentredPlaceholder;
SEL centerSelector = NSSelectorFromString([NSString stringWithFormat:@"%@%@", @"setCenter", @"Placeholder:"]);
if ([self respondsToSelector:centerSelector])
{
NSMethodSignature *signature = [[UISearchBar class] instanceMethodSignatureForSelector:centerSelector];
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature];
[invocation setTarget:self];
[invocation setSelector:centerSelector];
[invocation setArgument:&_hasCentredPlaceholder atIndex:2];
[invocation invoke];
}
}
@end