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 }

這樣就行了 我們來看一下運行效果圖

這樣是不是達到你想要的效果了??嘿嘿

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM