今天因为需求原因,需要用到搜索控件;之前一直没有用到过这个控件,所以去百度了一下,找到一篇可以说很齐全的资料,感谢这位作者。

然而,我并没有找到可以更改字体大小的属性或方法,希望有知道的告诉我一声,谢谢!

原文地址:http://my.oschina.net/u/2340880/blog/509756

初始化:UISearchBar继承于UIView,我们可以像创建View那样创建searchBar

 UISearchBar *bar = [[UISearchBar alloc]initWithFrame:CGRectMake(, , , )];
 [self.view addSubview:bar];
 // 这个属性可以设置searchBar的搜索
 @property(nonatomic) UIBarStyle barStyle;
 // 枚举如下:
 typedef NS_ENUM(NSInteger, UIBarStyle) {
     UIBarStyleDefault          = ,//默认风格 白色搜索框,多出的背景为灰色
     UIBarStyleBlack            = ,//黑色风格,黑色的搜索框
     //下面两个枚举已经被禁用,作用和黑色风格一样
     UIBarStyleBlackOpaque      = , // Deprecated. Use UIBarStyleBlack
     UIBarStyleBlackTranslucent = , // Deprecated. Use UIBarStyleBlack and set the translucent property to YES
 };

设置搜索框中的文字

 @property(nonatomic,copy) NSString *text; 

这个属性的官方解释是在搜索框顶部显示一行文字,其实就是背景文字,上图说明:

 @property(nonatomic,copy) NSString *prompt; 
 bar.prompt = @"搜索框";
 bar.text="

效果如下:

和其他文本输入控件的placeholder相同,在输入文字时就会消失

 @property(nonatomic,copy) NSString *placeholder;  

是否在搜索框右侧显示一个图书的按钮,默认为NO,YES的效果如下:

 @property(nonatomic) BOOL showsBookmarkButton; 

是否显示取消按钮,默认为NO,YES的效果如下:

 @property(nonatomic) BOOL showsCancelButton;

是否显示搜索结果按钮,默认为NO,YES效果如下:

 @property(nonatomic) BOOL showsSearchResultsButton;

设置搜索结果按钮的选中状态

 @property(nonatomic, getter=isSearchResultsButtonSelected) BOOL searchResultsButtonSelected ;

设置显示取消按钮

 - (void)setShowsCancelButton:(BOOL)showsCancelButton animated:(BOOL)animated;

设置这个颜色值会影响搜索框中的光标的颜色

 @property(nonatomic,retain) UIColor *tintColor;

设置这个颜色会影响搜索框的背景颜色

 @property(nonatomic,retain) UIColor *barTintColor;

设置搜索框整体的风格

 @property (nonatomic) UISearchBarStyle searchBarStyle;

枚举如下:

 typedef NS_ENUM(NSUInteger, UISearchBarStyle) {
     UISearchBarStyleDefault,    // currently UISearchBarStyleProminent
     UISearchBarStyleProminent,  // 显示背景
     UISearchBarStyleMinimal     // 不显示背景
 } NS_ENUM_AVAILABLE_IOS(7_0);

设置是否半透明

 @property(nonatomic,assign,getter=isTranslucent) BOOL translucent;

是否显示搜索栏的附件选择按钮视图,要想显示这个视图,首先要将这个属性设置为YES,之后给按钮数组中添加按钮,使用下面这个属性:

 @property(nonatomic) BOOL showsScopeBar ;

设置选择按钮视图的按钮标题

 @property(nonatomic,copy) NSArray *scopeButtonTitles ;

 @property(nonatomic) NSInteger selectedScopeButtonIndex;

设置一个默认的选中按钮

bar = [[UISearchBar alloc]initWithFrame:CGRectMake(, , , )];
bar.showsScopeBar=YES;
bar.scopeButtonTitles = @["];

键盘的附属视图

 @property (nonatomic, readwrite, retain) UIView *inputAccessoryView;

设置搜索框的背景图案

 @property(nonatomic,retain) UIImage *backgroundImage;

设置附属选择按钮视图的背景图案

 @property(nonatomic,retain) UIImage *scopeBarBackgroundImage;

这一对方法可以设置和获取某个状态枚举下的搜索框的背景图案

- (void)setBackgroundImage:(UIImage *)backgroundImage forBarPosition:(UIBarPosition)barPosition barMetrics:(UIBarMetrics)barMetrics ;

- (UIImage *)backgroundImageForBarPosition:(UIBarPosition)barPosition barMetrics:(UIBarMetrics)barMetrics

这一对方法用于设置和获取搜索框中TextField的背景图案

- (void)setSearchFieldBackgroundImage:(UIImage *)backgroundImage forState:(UIControlState)state;

- (UIImage *)searchFieldBackgroundImageForState:(UIControlState)state;

这一对方法用于获取和设置搜索栏icon图片的图案

- (void)setImage:(UIImage *)iconImage forSearchBarIcon:(UISearchBarIcon)icon state:(UIControlState)state ;

- (UIImage *)imageForSearchBarIcon:(UISearchBarIcon)icon state:(UIControlState)state ;

这一对方法用于设置和获取搜索框的附加选择按钮视图的背景图案

- (void)setScopeBarButtonBackgroundImage:(UIImage *)backgroundImage forState:(UIControlState)state;

- (UIImage *)scopeBarButtonBackgroundImageForState:(UIControlState)state;

这一对方法用于获取和设置附加选择按钮视图中切换按钮的图案

- (void)setScopeBarButtonDividerImage:(UIImage *)dividerImage forLeftSegmentState:(UIControlState)leftState rightSegmentState:(UIControlState)rightState;

- (UIImage *)scopeBarButtonDividerImageForLeftSegmentState:(UIControlState)leftState rightSegmentState:(UIControlState)rightState;

这一对方法用于设置和获取切换按钮标题文字的字体属性字典

- (void)setScopeBarButtonTitleTextAttributes:(NSDictionary *)attributes forState:(UIControlState)state;

- (NSDictionary *)scopeBarButtonTitleTextAttributesForState:(UIControlState)state;

搜索文字在搜索框中的位置偏移

@property(nonatomic) UIOffset searchFieldBackgroundPositionAdjustment;

textfield在搜索框中的位置偏移

@property(nonatomic) UIOffset searchTextPositionAdjustment;

设置搜索栏中图片的位置偏移

- (void)setPositionAdjustment:(UIOffset)adjustment forSearchBarIcon:(UISearchBarIcon)icon;

- (UIOffset)positionAdjustmentForSearchBarIcon:(UISearchBarIcon)icon;

图片的枚举如下:

typedef NS_ENUM(NSInteger, UISearchBarIcon) {
    UISearchBarIconSearch, //搜索图标
    UISearchBarIconClear, // 清除图标
    UISearchBarIconBookmark, // 书本图标
    UISearchBarIconResultsList, // 结果列表图标
};

下面是搜索框控件的一些代理方法:

将要开始编辑时的回调,返回为NO,则不能编辑

- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar;

已经开始编辑时的回调

- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar;

将要结束编辑时的回调

- (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar;

已经结束编辑的回调

- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar;

编辑文字改变的回调

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText;

编辑文字改变前的回调,返回NO则不能加入新的编辑文字

- (BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text ;

搜索按钮点击的回调

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar;

书本按钮点击的回调

- (void)searchBarBookmarkButtonClicked:(UISearchBar *)searchBar;

取消按钮点击的回调

- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar;

搜索结果按钮点击的回调

- (void)searchBarResultsListButtonClicked:(UISearchBar *)searchBar;

搜索栏的附加视图中切换按钮触发的回调

- (void)searchBar:(UISearchBar *)searchBar selectedScopeButtonIndexDidChange:(NSInteger)selectedScope;

                                      2016-07-24

iOS开发--UIKit控件之UISearchBar(搜索栏)的更多相关文章

  1. 【ios开发】控件细究1:UITableView

    工作了将近两个月,共接手两个项目,在项目中用的最多的就是UITableView了,但是也是问题出现的最多的地方,由于一开始不熟练,导致很多问题花了很长时间才解决.所以利用这两天空闲时间,好好梳理一下这 ...

  2. iOS开发-DatePicker控件

    时间控件不管是Android还是iOS中都是必然存在的一个控件,具体的效果大同小异,显示日期,时间,iOS中有四种方式可以选择,Time, Date,Date and Time  , Count Do ...

  3. IOS开发之控件篇UINavigationController第一章 - 介绍

    UINavigationController是一个比较常见的控件,它连接个视图,例如一个视图走到另外一个视图,之间的联系都可以用这个NavigationController的方法 一般都会由两个部分组 ...

  4. IOS开发之控件篇UICollectionViewControllor第一章 - 普通介绍

    1.介绍 UICollectionView和UICollectionViewControllor是IOS6.0后引入的新控件 使用UICollectionView必须实现三个接口: UICollect ...

  5. IOS开发之控件篇UITabBarControllor第一章 - 介绍

    UITabBarControllor的基本样子 官方有个图介绍这个TabBar的结构,我们先来看看这个结构图 --------------------------------------------- ...

  6. iOS开发基础控件--UISegmentedControl

    UISegmentedControl全局外观设置 分段控件是我们常用的控件之一,今天把具体用法总结了下: 1.初始化UISegmentedControl [plain] view plaincopy ...

  7. iOS开发基础控件--UIButton

    01 //这里创建一个圆角矩形的按钮 02     UIButton *button1 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 03 ...

  8. iOS开发基础控件--UILabel

    UILabel 的常见属性和方法: //创建UIlabel对象 UILabel* label = [[UILabel alloc] initWithFrame:self.view.bounds]; / ...

  9. iOS开发xib控件删不掉,修改xib运行不发生改变,修改xib不管用

    修改xib控件tag值,颜色,大小,甚至删除发现编译.运行之后效果没改变,用代码修改内容发现管用, 其实只需要clean一下!^_^ 快捷键:shift + command + k

随机推荐

  1. 教你50招提升ASP.NET性能(二十):7条便利的ViewState技巧

    (32)Seven handy ViewState tips 招数32: 7条便利的ViewState技巧 Every time I have to deal with a classic ASP.N ...

  2. SpringMVC4.2.4 xml配置

    环境:1.基于spring4.2.4版本,也是spring当前(2016.2)最新的GA版本 2.maven 3.2.1 3.jdk1.7 xml配置1: web.xml <?xml versi ...

  3. Cucumber 入门一

    (转自:http://www.cnblogs.com/jarodzz/archive/2012/07/02/2573014.html) 第一次看到Cucumber和BDD(Behavior Drive ...

  4. Android apk的安装、卸载、更新升级(通过Eclipse实现静默安装)

    一.通过Intent消息机制发送消息,调用系统应用进行,实现apk的安装/卸载 . (1) 调用系统的安装应用,让系统自动进行apk的安装 String fileName = "/data/ ...

  5. sql语句having子句用法,很多时候你曾忘掉

    显示每个地区的总人口数和总面积.仅显示那些面积超过1000000的地区. SELECT region, SUM(population), SUM(area) FROM bbc GROUP BY reg ...

  6. [Angular 2] *ngFor

    heros.ts: import {Component} from "@angular/core"; const HEROES = [ {id: 1, name:'Superman ...

  7. [Canvas] Make Canvas Responsive to Pixel Ratio

    Canvas is great for high performance graphics rendering but by default the results look blocky on ph ...

  8. ireport启动闪退问题

    安装好ireport之后,双击ireport.exe启动程序只是掠过启动画面便毫无反应, 后来在网上找了下解决方法,才知道只因为ireport与jdk8不兼容, 于是下载了jdk6,并在ireport ...

  9. 详解MySQL中EXPLAIN解释命令

    Explain 结果解读与实践   基于 MySQL 5.0.67 ,存储引擎 MyISAM .   注:单独一行的"%%"及"`"表示分隔内容,就象分开“第一 ...

  10. mysql高效获取两张表共同字段的交集数据

    例如下面两站表A,B.A表和B表分别有5-10w数据.A表结构如下:id bid name title publisher extraB表结构如下id bid name title publisher ...