自定义 UISearchbar 圆角及高度等等

有时候 UI设计师设计的搜索框和系统的不太一样, 而且相差很多,可以自定义一个 UISearchBar.

系统默认的样子

系统默认样式

可以看到默认的样式中有背景, 且搜索框中的底色是白色, 搜索图标为小的放大镜, 最外层框不是圆角.

1.设置背景

继承自 UISearchBar

    self.placeholder = @"搜索你想知道的";
    self.barTintColor = [UIColor redColor];
更改样式1

当然也可以去除外边框

    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 用于垃圾回收机制

你可能感兴趣的:(自定义 UISearchbar 圆角及高度等等)