先把源码贴出来

https://github.com/losedMemory/ZSSearchBar   这是我在github上写的一个Demo,大家可以看看

在大多数app中都会用到搜索功能,那么搜索功能的实现离不开UISearchBar这个控件.

UISearchBar继承自UIView,下面简单的介绍一下它的属性和方法.

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Menlo; color: #3495af }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Menlo }
span.s1 { color: #000000 }
span.s2 { }
span.s3 { color: #3495af }

UISearchBar *searchBar = [[UISearchBar alloc]init];

searchBar.frame = CGRectMake(0, 0, 300, 44);//初始化方法

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Menlo; color: #3495af }
span.s1 { color: #000000 }
span.s2 { }
span.s3 { color: #b4261a }
span.s4 { font: 15.0px "PingFang SC"; color: #b4261a }

[searchBar setPlaceholder:@"搜索"];//设置占位文字

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Menlo; color: #3495af }
span.s1 { color: #000000 }
span.s2 { }

[searchBar setBarTintColor:[UIColor orangeColor]];//在这里设置背景颜色

当然会有些人这么写:[searchBar setTintColor:[UIColor orangeColor]];但是根据文档这个方法在iOS7之后就不再影响bar的背景颜色

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Menlo; color: #3495af }
span.s1 { color: #000000 }
span.s2 { }
span.s3 { color: #0433ff }

[searchBar setTranslucent:YES];//设置是否透明

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Menlo; color: #3495af }
span.s1 { color: #000000 }
span.s2 { }
span.s3 { color: #0433ff }
span.s4 { color: #008f00 }
span.s5 { font: 15.0px "PingFang SC"; color: #008f00 }

[searchBar setShowsSearchResultsButton:YES];//是否显示搜索结果按钮

就是这个按钮,这个可以放大搜索结果

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Menlo; color: #3495af }
span.s1 { color: #000000 }
span.s2 { }

[searchBar setSearchTextPositionAdjustment:UIOffsetMake(30, 0)];//设置搜索框中文文本框的文本偏移量

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Menlo; color: #3495af }
span.s1 { color: #000000 }
span.s2 { }
span.s3 { color: #0433ff }
span.s4 { color: #b4261a }

[searchBar setShowsScopeBar:YES];

[searchBar setScopeButtonTitles:[NSArray arrayWithObjects:@"Singer",@"Song",@"Album", nil]];//这是设置搜索框下面的分栏的,效果如下:

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Menlo; color: #3495af }
span.s1 { color: #000000 }
span.s2 { }

[searchBar setSelectedScopeButtonIndex:1];//在这里设置默认选中的分栏

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Menlo }
span.s1 { }

[searchBar setInputAccessoryView:maskView];//在进行搜索时显示一个出现的遮罩,效果参照电话簿

[searchBar setShowsCancelButton:YES]  //是否显示取消按钮

//获取cancelButton的方法,可以设置其点击事件

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Menlo; color: #3495af }
span.s1 { color: #000000 }
span.s2 { }
span.s3 { color: #0433ff }
span.s4 { color: #b4261a }

UIButton *cancelButton = [self.searchBar valueForKey:@"_cancelButton"];

代理方法:

//已经开始进行编辑

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Menlo }
span.s1 { }
span.s2 { color: #0433ff }
span.s3 { color: #3495af }

- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar

//UISearchBar得到焦点并开始编辑时,执行该方法

- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar

//取消按钮的点击事件

- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar

//在键盘中的搜索按钮的点击事件

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar

//当搜索框中的内容发生改变时会自动进行搜索,这个是经常用的

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

一般比较常用的就是这些

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Menlo; color: #3495af }
span.s1 { color: #000000 }
span.s2 { }

iOS中利用UISearchBar实现搜索的更多相关文章

  1. iOS中的两种搜索方式UISearchDisplayController和UISearchController

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 以前iOS的搜索一般都使用UISearchDisplayCon ...

  2. iOS中利用CoreTelephony获取用户当前网络状态(判断2G,3G,4G)

    前言: 在项目开发当中,往往需要利用网络.而用户的网络环境也需要我们开发者去注意,根据不同的网络状态作相应的优化,以提升用户体验. 但通常我们只会判断用户是在WIFI还是移动数据,而实际上,移动数据也 ...

  3. iOS中利用 runtime 一键改变字体

    1.准备 我们新建一个项目名叫ChangeFont,然后我就随便找了个名叫loveway.ttf的字体库拖进去,里面的工程目录大概就是这样的 目录 现在我们就简单的直接在storyboard上拖了一个 ...

  4. iOS中利用CoreTelephony获取用户当前网络状态(判断2G,3G,4G) by徐文棋

    前言: 在项目开发当中,往往需要利用网络.而用户的网络环境也需要我们开发者去注意,根据不同的网络状态作相应的优化,以提升用户体验. 但通常我们只会判断用户是在WIFI还是移动数据,而实际上,移动数据也 ...

  5. IOS中利用宏将RGB值转换为UIColor(转)

    可以在pch文件中定义宏,这样整个项目就都可以用了! #define UIColorFromRGBValue(rgbValue) [UIColor colorWithRed:((float)((rgb ...

  6. ios中利用NSDateComponents、NSDate、NSCalendar判断当前时间是否在一天的某个时间段内。

    应用中设置一般会存在这样的设置,如夜间勿扰模式,从8:00-23:00,此时如何判断当前时间是否在该时间段内.难点主要在于如何用NSDate生成一个8:00的时间和23:00的时间,然后用当前的时间跟 ...

  7. iOS之让UISearchBar搜索图标和placeholder靠左显示

    系统UISearchBar效果图: 需求效果图: 两种方案: 找到UISearchBar上的放大镜图标, 修改Frame. 同时判断在有无文本内容更改placeholder的颜色. 利用UISearc ...

  8. iOS 如何自定义UISearchBar 中textField的高度

    iOS 如何自定义UISearchBar 中textField的高度 只需设置下边的方法就可以 [_searchBar setSearchFieldBackgroundImage:[UIImage i ...

  9. 利用iOS中Safari浏览器创建伪Web App

    在safari浏览器里有一个“添加到主屏幕”选项,我们可以用来创建伪Web App,下面来了解一下iOS中Safari的私有属性 第一步设置Web App的主屏幕图标: 有两种属性值apple-tou ...

随机推荐

  1. 前台改变asp button控件的值,后台取值没有改变的问题

    前台: <asp:Button ID="btnEdit" Style="margin-left: 600px;" runat="server&q ...

  2. 拓扑序+dp Codeforces Round #374 (Div. 2) C

    http://codeforces.com/contest/721/problem/C 题目大意:给你有向路,每条路都有一个权值t,你从1走到n,最多花费不能超过T,问在T时间内最多能访问多少城市? ...

  3. PhotoShop纸张大小

    1*标准打印纸 A4:210mm*297mm A3: 420mm*297mm 一张全开纸切成多少份 大度16开:210mm*285mm(度:切的意思) 大度8开:420*285mm 2*传统印刷纸 A ...

  4. Openlayers 3 的 imagelayer

    <body> <div id="map"></div> <script> var extent = [0, 0, 1024, 968 ...

  5. Learning Java characteristics (Java in a Nutshell 6th)

    Java characteristics: Java .class files are machine-independent, including the endianness. Java .cla ...

  6. 初识Jmeter(一)

    倒霉熊的推荐: 文本学习网址:http://m.open-open.com/m/doc/category/105 视频学习网址: 软件学习网:http://www.ask3.cn/index.html ...

  7. math ceil以及math floor,math:round

    ◎Math.ceil()执行向上舍入,即它总是将数值向上舍入为最接近的整数:◎Math.floor()执行向下舍入,即它总是将数值向下舍入为最接近的整数:◎Math.round()执行标准舍入,即它总 ...

  8. hdu 3345 War Chess

    War Chess Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Sub ...

  9. [转载] ASP.NET MVC4使用百度UEDITOR编辑器

    前言 配置.net mvc4项目使用ueditor编辑器,在配置过程中遇见了好几个问题,以此来记录解决办法.编辑器可以到http://ueditor.baidu.com/website/downloa ...

  10. sealed、new、virtual、abstract与override 总结

    1. sealed——“断子绝孙” 密封类不能被继承.密封方法可以重写基类中的方法,但其本身不能在任何派生类中进一步重写.当应用于方法或属性时,sealed修饰符必须始终与override一起使用. ...