經過自定義UITextField 設置 搜索框

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
相關文章
相關標籤/搜索