有时候 UI设计师设计的搜索框和系统的不太一样, 而且相差很多,可以自定义一个 UISearchBar.
系统默认的样子
可以看到默认的样式中有背景, 且搜索框中的底色是白色, 搜索图标为小的放大镜, 最外层框不是圆角.
1.设置背景
继承自 UISearchBar
self.placeholder = @"搜索你想知道的";
self.barTintColor = [UIColor redColor];
当然也可以去除外边框
self.backgroundImage = [UIImage new];
2.通过 KVC 更改内部的 textField 样式
// 1. 通过 KVC 取出内部的 textField
UITextField *textField = [self valueForKey:@"_searchField"];
//2. 修改内部的 textField 的圆角, 默认高度28
textField.layer.cornerRadius = 14.0;
textField.layer.masksToBounds = YES;
//3. 修改字体的大小
textField.font = [UIFont systemFontOfSize:18];
//4. 修改光标的颜色
textField.tintColor = [UIColor greenColor];
//5. 修改搜索文字的颜色
textField.textColor = [UIColor redColor];
3.修改搜索小图标
// 方法一:
textField.leftView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"theme_home_service"]];
// 方法二:
[self setImage:[UIImage imageNamed:@"theme_home_service"] forSearchBarIcon:UISearchBarIconSearch state:UIControlStateNormal];
4.更改搜索框的高度
//方法一: 直接更改 textField的高度, 和searchBar的高度, 且一致 然后更改 textField 的底色
textField.backgroundColor = [UIColor redColor];
CGRect rectS = textField.bounds;
rectS.size.height = 50;
textField.bounds = rectS;
self.backgroundImage = [UIImage new];
CGRect rect = self.bounds;
rect.size.height = 50;
self.bounds = rect;
//方法二: 更改 searchBar 的高度, 将textField的底色清除, 更改 searchBar 的北京图片或者背景颜色
textField.backgroundColor = [UIColor clearColor];
self.backgroundImage = [UIImage imageNamed:@"theme_bgImg"];
CGRect rect = self.bounds;
rect.size.height = 50;
self.bounds = rect;
5.通过运行时查看类的私有属性
导入#import
unsigned int count = 0;
Ivar *Ivars = class_copyIvarList([self class], &count);
for (int i = 0; i < count; i++) {
Ivar ivar = *(Ivars + i);
NSLog(@"type------%s-------name------%s",ivar_getTypeEncoding(ivar), ivar_getName(ivar));
}
free(Ivars);
打印结果
2017-05-10 12:03:27.636596 test[5705:815120] type------@"_UICascadingTextStorage"-------name------_textStorage
2017-05-10 12:03:27.636773 test[5705:815120] type------i-------name------_borderStyle
2017-05-10 12:03:27.636864 test[5705:815120] type------f-------name------_minimumFontSize
2017-05-10 12:03:27.636949 test[5705:815120] type------@-------name------_delegate
2017-05-10 12:03:27.637036 test[5705:815120] type------@"UIImage"-------name------_background
2017-05-10 12:03:27.637121 test[5705:815120] type------@"UIImage"-------name------_disabledBackground
2017-05-10 12:03:27.637208 test[5705:815120] type------i-------name------_clearButtonMode
2017-05-10 12:03:27.637293 test[5705:815120] type------@"UIView"-------name------_leftView
2017-05-10 12:03:27.637377 test[5705:815120] type------i-------name------_leftViewMode
2017-05-10 12:03:27.637460 test[5705:815120] type------@"UIView"-------name------_rightView
2017-05-10 12:03:27.637544 test[5705:815120] type------i-------name------_rightViewMode
2017-05-10 12:03:27.637726 test[5705:815120] type------@"UITextInputTraits"-------name------_traits
2017-05-10 12:03:27.637813 test[5705:815120] type------@"UITextInputTraits"-------name------_nonAtomTraits
2017-05-10 12:03:27.638597 test[5705:815120] type------@"_UIFullFontSize"-------name------_fullFontSize
2017-05-10 12:03:27.638900 test[5705:815120] type------{UIEdgeInsets="top"f"left"f"bottom"f"right"f}-------name------_padding
2017-05-10 12:03:27.639096 test[5705:815120] type------{_NSRange="location"I"length"I}-------name------_selectionRangeWhenNotEditing
2017-05-10 12:03:27.639195 test[5705:815120] type------i-------name------_scrollXOffset
2017-05-10 12:03:27.639282 test[5705:815120] type------i-------name------_scrollYOffset
2017-05-10 12:03:27.639445 test[5705:815120] type------f-------name------_progress
2017-05-10 12:03:27.639566 test[5705:815120] type------@"UIButton"-------name------_clearButton
2017-05-10 12:03:27.639669 test[5705:815120] type------{CGSize="width"f"height"f}-------name------_clearButtonOffset
2017-05-10 12:03:27.639761 test[5705:815120] type------{CGSize="width"f"height"f}-------name------_leftViewOffset
2017-05-10 12:03:27.639852 test[5705:815120] type------{CGSize="width"f"height"f}-------name------_rightViewOffset
2017-05-10 12:03:27.641183 test[5705:815120] type------@"UITextFieldBorderView"-------name------_backgroundView
2017-05-10 12:03:27.641280 test[5705:815120] type------@"UITextFieldBorderView"-------name------_disabledBackgroundView
2017-05-10 12:03:27.641371 test[5705:815120] type------@"UITextFieldBackgroundView"-------name------_systemBackgroundView
2017-05-10 12:03:27.641513 test[5705:815120] type------@"_UIFloatingContentView"-------name------_floatingContentView
2017-05-10 12:03:27.641605 test[5705:815120] type------@"UIVisualEffectView"-------name------_contentBackdropView
2017-05-10 12:03:27.641697 test[5705:815120] type------@"_UIDetachedFieldEditorBackgroundView"-------name------_fieldEditorBackgroundView
2017-05-10 12:03:27.641982 test[5705:815120] type------@"UIVisualEffectView"-------name------_fieldEditorEffectView
2017-05-10 12:03:27.642084 test[5705:815120] type------@"UITextFieldLabel"-------name------_displayLabel
2017-05-10 12:03:27.642175 test[5705:815120] type------@"UITextFieldLabel"-------name------_placeholderLabel
2017-05-10 12:03:27.643597 test[5705:815120] type------@"UITextFieldLabel"-------name------_suffixLabel
2017-05-10 12:03:27.643693 test[5705:815120] type------@"UITextFieldLabel"-------name------_prefixLabel
2017-05-10 12:03:27.643783 test[5705:815120] type------@"UIImageView"-------name------_iconView
2017-05-10 12:03:27.643871 test[5705:815120] type------@"UILabel"-------name------_label
2017-05-10 12:03:27.643975 test[5705:815120] type------f-------name------_labelOffset
2017-05-10 12:03:27.644758 test[5705:815120] type------@"NSAttributedString"-------name------_overriddenPlaceholder
2017-05-10 12:03:27.644876 test[5705:815120] type------i-------name------_overriddenPlaceholderAlignment
2017-05-10 12:03:27.644969 test[5705:815120] type------@"UITextInteractionAssistant"-------name------_interactionAssistant
2017-05-10 12:03:27.645129 test[5705:815120] type------@"UITapGestureRecognizer"-------name------_selectGestureRecognizer
2017-05-10 12:03:27.646212 test[5705:815120] type------@"UIView"-------name------_inputView
2017-05-10 12:03:27.646318 test[5705:815120] type------@"UIView"-------name------_inputAccessoryView
2017-05-10 12:03:27.646452 test[5705:815120] type------@"UISystemInputViewController"-------name------_systemInputViewController
2017-05-10 12:03:27.646547 test[5705:815120] type------@"UITextFieldAtomBackgroundView"-------name------_atomBackgroundView
2017-05-10 12:03:27.646645 test[5705:815120] type------{?="verticallyCenterText"b1"isAnimating"b4"inactiveHasDimAppearance"b1"becomesFirstResponderOnClearButtonTap"b1"clearsPlaceholderOnBeginEditing"b1"adjustsFontSizeToFitWidth"b1"fieldEditorAttached"b1"canBecomeFirstResponder"b1"shouldSuppressShouldBeginEditing"b1"inResignFirstResponder"b1"undoDisabled"b1"explicitAlignment"b1"implementsCustomDrawing"b1"needsClearing"b1"suppressContentChangedNotification"b1"allowsEditingTextAttributes"b1"usesAttributedText"b1"backgroundViewState"b2"clearingBehavior"b2"overridePasscodeStyle"b1"shouldResignWithoutUpdate"b1"blurEnabled"b1"disableFocus"b1"disableRemoteTextEditing"b1}-------name------_textFieldFlags
2017-05-10 12:03:27.649496 test[5705:815120] type------c-------name------_deferringBecomeFirstResponder
2017-05-10 12:03:27.649604 test[5705:815120] type------c-------name------_avoidBecomeFirstResponder
2017-05-10 12:03:27.649712 test[5705:815120] type------c-------name------_setSelectionRangeAfterFieldEditorIsAttached
2017-05-10 12:03:27.649859 test[5705:815120] type------c-------name------_animateNextHighlightChange
2017-05-10 12:03:27.649957 test[5705:815120] type------@"CUICatalog"-------name------_cuiCatalog
2017-05-10 12:03:27.650051 test[5705:815120] type------@"CUIStyleEffectConfiguration"-------name------_cuiStyleEffectConfiguration
2017-05-10 12:03:27.650142 test[5705:815120] type------f-------name------_roundedRectBackgroundCornerRadius
2017-05-10 12:03:27.650231 test[5705:815120] type------c-------name------_adjustsFontForContentSizeCategory
2017-05-10 12:03:27.650600 test[5705:815120] type------c-------name------_tvUseVibrancy
2017-05-10 12:03:27.650696 test[5705:815120] type------c-------name------_disableTextColorUpdateOnTraitCollectionChange
2017-05-10 12:03:27.650788 test[5705:815120] type------@"NSLayoutConstraint"-------name------_baselineLayoutConstraint
2017-05-10 12:03:27.650878 test[5705:815120] type------@"_UIBaselineLayoutStrut"-------name------_baselineLayoutLabel
2017-05-10 12:03:27.651086 test[5705:815120] type------@"UIColor"-------name------_tvCustomTextColor
2017-05-10 12:03:27.651324 test[5705:815120] type------@"UIColor"-------name------_tvCustomFocusedTextColor
特性编码 具体含义
R readonly
C copy
& retain
N nonatomic
G(name) getter=(name)
S(name) setter=(name)
D @dynamic
W weak
P 用于垃圾回收机制