iOS开发之自定义SearchBar导航条右侧显示放大镜

ios中导航条SearchBar控件虽然说很好用,但是有的时候控件的样式不能达到我们的需要,比如我们需要导航条的右侧有个放大镜,系统提供的控件没有这样的,这就需要我们自定义一个这样的searchBar了.

1,因为searchBar控件输入的时候和textField想似,所以我们自定义的控件继承与textField,起名字为searchView

我们可以看一下searchView.h里面的内容

1 #import <UIKit/UIKit.h>
2
3 @interface searchView : UITextField
4
5 @end

2,首先我们要在searchView.m里面实现初始化方法:

 1 -(id)initWithFrame:(CGRect)frame
 2 {
 3 self = [super initWithFrame:frame];
 4 if(self){
 5 [self searchView]; //调用searchView方法
 6 }
 7 }
 8
 9 #pragma mark 实现searchView方法
10 -(void)searchView
11 {
12 self.placeholder = @"搜索店铺或者商品";
13 //设置textField的样式
14 self.borderStyle = UITextBorderStyleRoundedRect;
15 //设置键盘的return键 的样式 我们更改为search字样
16 self.returnKeyType = UIReturnKeySearch;
17 //创建imageView对象
18 UIImageView * imgView = [[UIImageView alloc]init];
19 //设置 imgVIew的用户可交互性
20  imgView.userInteractionEnabled = YES;
21 //给 imgView赋值  tabbar_discover是一个放大镜图片
22  imgView.image = [UIImage imageNamed:@"tabbar_discover"];
23 //设置self (textField)的 rightView属性和 rightViewMode的属性
24 self.rightView = imgView;
25 self.rightViewMode = UITextFieldViewModeAlways;
26 //向 这张图片添加一个手势
27 UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(btnClick:)];
28 [imgView addGestureRecognizer:tap];
29
30
31 }
32 //实现按钮点击事件
33 -(void)btnClick:(UIButton *)btn
34 {
35     NSLog(@" 111111111111%@",self.text);
36     NSLog(@"5555");
37 }

3,在viewController.m里面 实现  首先记得导入头文件呦!

 1 #import "ViewController.h"
 2 #import "searchView.h"
 3
 4 @interface ViewController ()<UITextFieldDelegate>
 5 {
 6     searchView * search;
 7 }
 8 @end
 9
10 @implementation ViewController
11
12 - (void)viewDidLoad {
13     [super viewDidLoad];
14
15     search = [[searchView alloc]initWithFrame:CGRectMake(20, 20, 280, 40)];
16     search.delegate = self;
17     search.layer.cornerRadius = 20;
18     search.clipsToBounds = YES;
19     [self.view addSubview:search];
20
21
22 }
23 - (BOOL)textFieldShouldReturn:(UITextField *)textField
24 {
25     NSLog(@"%@",search.text);
26     return YES;
27 }

这样就行了 我们来看一下运行效果图

这样是不是达到你想要的效果了??嘿嘿

时间: 2024-08-06 07:57:05

iOS开发之自定义SearchBar导航条右侧显示放大镜的相关文章

【iOS开发-22】navigationBar导航条和navigationItem设置:基本搞定导航条上的文字和按钮以及各种跳转

(1)navigationBar导航条可以看做是self.navigationController导航控制器的一个属性,可以直接用点来表示self.navigationController.navigationBar,当然navigationBar自己还有很多属性,比如样式barStyle.背景backgroundColor.frame属性(可以获取宽高这些信息),还可以用setBackgroundImage方法设置背景图片,当然图片多了可以使用clipsToBounds剪裁. (2)但,nav

IOS开发基础知识碎片-导航

1:IOS开发基础知识--碎片1 a:NSString与NSInteger的互换 b:Objective-c中集合里面不能存放基础类型,比如int string float等,只能把它们转化成对象才可以存放,就是类NSNumber c:NSDATA与NSString互转 d:去除输入框空格(NSString也适用) f:IBOutlet,IBAction说明 2:IOS开发基础知识--碎片2  a:获得另一个控件器,并实现跳转 b:判断IOS版本 c:Button不同状态下背景图片 d:判断设备

iOS开发项目—04添加导航栏的按钮

iOS开发项目—04添加导航栏的按钮 一.设置导航栏的按钮 要求实现的效果:             说明:默认状态下和高亮状态下的图片是不一样的. 按钮的图片需要设置默认状态和高亮状态时的显示,系统了提供的下面方法 viewController.navigationItem.leftBarButtonItem=[UIBarButtonItem alloc]initWithImage:<#(UIImage *)#> style:<#(UIBarButtonItemStyle)#>

iOS开发之自定义表情键盘(组件封装与自动布局)

下面的东西是编写自定义的表情键盘,话不多说,开门见山吧!下面主要用到的知识有MVC, iOS开发中的自动布局,自定义组件的封装与使用,Block回调,CoreData的使用.有的小伙伴可能会问写一个自定义表情键盘肿么这么麻烦?下面将会介绍我们如何用上面提到的东西来定义我们的表情键盘的.下面的内容会比较多,这篇博文还是比较有料的. 还是那句话写技术博客是少不了代码的,下面会结合代码来回顾一下iOS的知识,本篇博文中用到的知识点在前面的博客中都能找到相应的内容,本篇算是一个小小的功能整合.先来张图看

iOS开发UINavigation系列四——导航控制器UINavigationController

iOS开发UINavigation系列四--导航控制器UINavigationController 一.引言 在前面的博客中,我么你介绍了UINavigationBar,UINavigationItem和UIToolBar,UINavigationController是将这些控件和UIViewController紧密的结合了起来,使用导航,我们的应用程序层次会更加分明,对controller的管理也更加方便.前几篇博客地址如下: UINavigationBar:http://my.oschina

iOS开发中自定义字体的方法

http://www.cnblogs.com/iyou/archive/2014/05/25/3751669.html 1. 首先下载你想要设置的字体库,例如设置方正启体简体 2. 添加到工程,一定要注意勾选红色框框处,默认是不勾选的  添加以后 3.在plist文件中添加 4.现在已经添加成功了,但是要使用就必须知道FontName,用以下代码可查到 NSArray *familyNames = [[NSArray alloc] initWithArray:[UIFont familyName

详解iOS开发之自定义View

iOS开发之自定义View是本文要将介绍的内容,iOS SDK中的View是UIView,我们可以很方便的自定义一个View.创建一个 Window-based Application程序,在其中添加一个Hypnosister的类,这个类选择继承UIObject.修改这个类,使他继承:UIView @interface HypnosisView : UIView 自定义View的关键是定义drawRect: 方法,因为主要是通过重载这个方法,来改变view的外观.例如,可以使用下面代码绘制一个很

iOS开发UINavigation系列一——导航栏UINavigtionBar

iOS开发UINavigation系列一--导航栏UINavigtionBar 一.导航栏的使用 在iOS开发中,我们通常会使用导航控制器,导航控制器中封装了一个UINavigationBar,实际上,我们也可以在不使用导航控制器的前提下,单独使用导航栏,在UINavigationBar中,也有许多我们可以定制的属性,用起来十分方便. 二.UINavigationBar的创建和风格类型 导航栏继承于UIView,所以我们可以像创建普通视图那样创建导航栏,比如我们创建一个高度为80的导航栏,将其放

IOS开发学习笔记-(3) 进度条、等待动画开始停止

一.创建对应空间视图  ,如下图: 二.编写对应的 .h 代码,如下 : #import <UIKit/UIKit.h> @interface ViewController : UIViewController @property (weak, nonatomic) IBOutlet UIActivityIndicatorView *activWaitNetWork; @property (weak, nonatomic) IBOutlet UIProgressView *pgrsDownLo