[iOS微博項目 - 1.2] - 導航欄搜索框


A.導航欄搜索框
1.需求
  • 在“發現”頁面,在頂部導航欄NavigationBar上添加一個搜索框
  • 左端帶有“放大鏡”圖標
 
Image(74)
 
2.思路
  • 使用UISearchBar: 簡單易用,但是樣式死板不能定制(此處UISearchBar的背景色容易和導航欄的背景色混淆),而且在iOS6和iOS7上會產生不同的樣式。
  • 使用UITextField創建:繼承或者擴展UITextField,設置背景圖和左端圖標
 
==>由於是一個自定義的“新”控件,這里我們使用繼承UITextField來實現
 
3.實現
  • 創建一個繼承UITextField的類,這里命名為HVWSearchBar
  • 重寫initWithFrame方法,用來初始化搜索框的圖標、背景圖片、圖標和文字的對稱方式、清除按鈕的顯示
  • 在需要的控制器上實例化HVWSearchBar,賦予其位置尺寸信息,添加到NavigationItem的titleView上
 
 1 //
 2 //  HVWSearchBar.m
 3 //  HVWWeibo
 4 //
 5 //  Created by hellovoidworld on 15/2/2.
 6 //  Copyright (c) 2015年 hellovoidworld. All rights reserved.
 7 //
 8 
 9 #import "HVWSearchBar.h"
10 
11 @implementation HVWSearchBar
12 
13 /** 使用代碼創建控件的時候,調用init的時候會調用此方法 */
14 - (instancetype)initWithFrame:(CGRect)frame {
15     // 由於是重寫方法,記得一定要先調用父類初始化方法
16     if (self = [super initWithFrame:frame]) {
17         // 設置內容垂直居中
18         [self setContentVerticalAlignment:UIControlContentVerticalAlignmentCenter];
19        
20         // 設置背景圖片(拉伸圖片)
21         self.background = [UIImage resizedImage:@"searchbar_textfield_background"];
22        
23         // 添加圖標“放大鏡“
24         UIImageView *searchBarIconView = [[UIImageView alloc] init];
25         searchBarIconView.image = [UIImage imageNamed:@"searchbar_textfield_search_icon"];
26        
27         // 調整”放大鏡”兩邊間距,view顯示為正方形
28         searchBarIconView.width = searchBarIconView.image.size.width + 10;
29         searchBarIconView.height = searchBarIconView.width;
30        
31         // 設置”放大鏡“在imageView中居中
32         [searchBarIconView setContentMode:UIViewContentModeCenter];
33        
34         // 設置textField的左部控件(”放大鏡“所屬的imageView)顯示
35         [self setLeftViewMode:UITextFieldViewModeAlways];
36        
37         // 設置圖標到搜索欄
38         self.leftView = searchBarIconView;
39        
40         // 顯示清除按鈕
41         [self setClearButtonMode:UITextFieldViewModeAlways];
42     }
43    
44     return self;
45 }
46 
47 @end
 
實例化一個HVWSearchBar:
1 - (void)viewDidLoad {
2     [super viewDidLoad];
3    
4     // 添加搜索框
5     HVWSearchBar *searchBar = [[HVWSearchBar alloc] init];
6     searchBar.frame = CGRectMake(0, 0, 300, 40);
7     self.navigationItem.titleView = searchBar;
8 }

 

 
 


免責聲明!

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



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