self.customSearchBar = [[UISearchBar alloc] init];
self.customSearchBar.delegate = self;
self.customSearchBar.placeholder = @"請輸入查詢信息";
//1. 設(shè)置背景顏色
//設(shè)置背景圖是為了去掉上下黑線
self.customSearchBar.backgroundImage = [[UIImage alloc] init];
// 設(shè)置SearchBar的顏色主題為白色
self.customSearchBar.barTintColor = [UIColor whiteColor];
//2. 設(shè)置圓角和邊框顏色
UITextField *searchField = [self.customSearchBar valueForKey:@"searchField"];
if (searchField) {
[searchField setBackgroundColor:[UIColor whiteColor]];
searchField.layer.cornerRadius = 14.0f;
searchField.layer.borderColor = [UIColor colorWithRed:247/255.0 green:75/255.0 blue:31/255.0 alpha:1].CGColor;
searchField.layer.borderWidth = 1;
searchField.layer.masksToBounds = YES;
}
//3. 設(shè)置按鈕文字和顏色
[self.customSearchBar fm_setCancelButtonTitle:@"取消"];
self.customSearchBar.tintColor = [UIColor colorWithRed:86/255.0 green:179/255.0 blue:11/255.0 alpha:1];
//設(shè)置取消按鈕字體
[self.customSearchBar fm_setCancelButtonFont:[UIFont systemFontOfSize:22]];
//修正光標(biāo)顏色
[searchField setTintColor:[UIColor blackColor]];
//4. 設(shè)置輸入框文字顏色和字體
[self.customSearchBar fm_setTextColor:[UIColor blackColor]];
[self.customSearchBar fm_setTextFont:[UIFont systemFontOfSize:14]];
//5. 設(shè)置搜索Icon
[self.customSearchBar setImage:[UIImage imageNamed:@"Search_Icon"]
forSearchBarIcon:UISearchBarIconSearch
state:UIControlStateNormal];
//6. 實(shí)現(xiàn)類似微信的搜索框
UIButton *voiceButton = [UIButton buttonWithType:UIButtonTypeCustom];
[voiceButton setImage:[UIImage imageNamed:@"Voice_button_icon"] forState:UIControlStateNormal];
[voiceButton addTarget:self action:@selector(tapVoiceButton:) forControlEvents:UIControlEventTouchUpInside];
[searchField addSubview:voiceButton];
self.voiceButton = voiceButton;
//Autolayout
voiceButton.translatesAutoresizingMaskIntoConstraints = NO;
NSDictionary *views = NSDictionaryOfVariableBindings(voiceButton);
//設(shè)置水平方向約束
[searchField addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"[voiceButton(21)]-|" options:NSLayoutFormatAlignAllRight | NSLayoutFormatAlignAllLeft metrics:nil views:views]];
//設(shè)置高度約束
[searchField addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[voiceButton(21)]" options:NSLayoutFormatAlignAllTop | NSLayoutFormatAlignAllBottom metrics:nil views:views]];
//設(shè)置垂直方向居中約束
[searchField addConstraint:[NSLayoutConstraint constraintWithItem:voiceButton attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:searchField attribute:NSLayoutAttributeCenterY multiplier:1 constant:0]];
#pragma mark -
#pragma mark .....:::::: UISearchBarDelegate ::::::.....
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar {
[searchBar setShowsCancelButton:YES animated:YES];
}
- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar {
searchBar.text = @"";
[searchBar setShowsCancelButton:NO animated:YES];
[searchBar endEditing:YES];
}
//監(jiān)控文本變化
- (BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
self.voiceButton.hidden = searchBar.text.length + (text.length - range.length) > 0;
return YES;
}
#import <UIKit/UIKit.h>
@interface UISearchBar (FMAdd)
- (void)fm_setTextFont:(UIFont *)font;
- (void)fm_setTextColor:(UIColor *)textColor;
- (void)fm_setCancelButtonTitle:(NSString *)title;
/**
* 設(shè)置取消按鈕字體
*
* @param font 字體
*/
- (void)fm_setCancelButtonFont:(UIFont *)font;
@end
#import "UISearchBar+FMAdd.h"
#define IS_IOS9 [[UIDevice currentDevice].systemVersion doubleValue] >= 9
@implementation UISearchBar (FMAdd)
- (void)fm_setTextFont:(UIFont *)font {
if (IS_IOS9) {
[UITextField appearanceWhenContainedInInstancesOfClasses:@[[UISearchBar class]]].font = font;
}else {
[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setFont:font];
}
}
- (void)fm_setTextColor:(UIColor *)textColor {
if (IS_IOS9) {
[UITextField appearanceWhenContainedInInstancesOfClasses:@[[UISearchBar class]]].textColor = textColor;
}else {
[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setTextColor:textColor];
}
}
- (void)fm_setCancelButtonTitle:(NSString *)title {
if (IS_IOS9) {
[[UIBarButtonItem appearanceWhenContainedInInstancesOfClasses:@[[UISearchBar class]]] setTitle:title];
}else {
[[UIBarButtonItem appearanceWhenContainedIn:[UISearchBar class], nil] setTitle:title];
}
}
- (void)fm_setCancelButtonFont:(UIFont *)font {
NSDictionary *textAttr = @{NSFontAttributeName : font};
if (IS_IOS9) {
[[UIBarButtonItem appearanceWhenContainedInInstancesOfClasses:@[[UISearchBar class]]] setTitleTextAttributes:textAttr forState:UIControlStateNormal];
}else {
[[UIBarButtonItem appearanceWhenContainedIn:[UISearchBar class], nil] setTitleTextAttributes:textAttr forState:UIControlStateNormal];
}
}
@end
iOS UISearchBar 設(shè)置
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 項(xiàng)目中幾乎肯定是要用搜索這項(xiàng)功能的,但是關(guān)于搜索框的圓角問題一直在困擾我!所以好好找了一下解決辦法,上干貨! 1....
- 最近需要優(yōu)化項(xiàng)目,把搜索框改了,樣式如下: 本以為很簡單,結(jié)果弄一下發(fā)現(xiàn)不對,特意把解決方法記錄下來: 注意的是叫...
- 更新iOS11后, 不少地方需要進(jìn)行適配,本文主要講下UISearchBar的適配,首先我們來看兩張圖對比 我們發(fā)...
- /** 取消searchBar背景色 */ - (UIImage *)imageWithColor:(UIColo...