UISearchBar由於不能知足項目需求進行了自定義UISearchBarcode
先實現功能,而後再進行封裝it
考慮使用UITextField進行自定義io
出現了垂直方向的問題,查看UITextField的對齊方式,在UITextField的API中沒有找到有關的方法,而後去其父類UIControl中查找class
找到了UIControlContentVerticalAlignment屬性,能夠調整垂直的樣式import
查看UITextField的屬性,有一個屬性爲leftView(若是沒有能夠考慮設置添加ImageView),設爲UIImageView方法
須要修改leftViewMode 屬性
im
封裝後能夠在其餘地方使用
項目
#import <UIKit/UIKit.h> @interface HMSearchBar : UITextField + (instancetype)searchBar; @end
#import "HMSearchBar.h" @implementation HMSearchBar - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { // 設置背景 self.background = [UIImage resizedImage:@"searchbar_textfield_background"]; // 設置內容 -- 垂直居中 self.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; // 設置左邊顯示一個放大鏡 UIImageView *leftView = [[UIImageView alloc] init]; leftView.image = [UIImage imageWithName:@"searchbar_textfield_search_icon"]; leftView.width = leftView.image.size.width + 10; leftView.height = leftView.image.size.height; // 設置leftView的內容居中 leftView.contentMode = UIViewContentModeCenter; self.leftView = leftView; // 設置左邊的view永遠顯示 self.leftViewMode = UITextFieldViewModeAlways; // 設置右邊永遠顯示清除按鈕 self.clearButtonMode = UITextFieldViewModeAlways; } return self; } + (instancetype)searchBar { return [[self alloc] init]; } @end