自定义 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 <objc/runtime.h>
        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 用于垃圾回收机制

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,830评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,992评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,875评论 0 331
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,837评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,734评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,091评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,550评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,217评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,368评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,298评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,350评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,027评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,623评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,706评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,940评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,349评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,936评论 2 341

推荐阅读更多精彩内容