有的時候,使用iOS自帶的控件不符合變態產品狗的需求時,我們只好自定義控件來滿足他們。在此處,我們通過創建一個GUSearchBar類,繼承自UITextField類來自定義搜索框。
創建GUSearchBar
代碼如下:GUSearchBar.h
#import <UIKit/UIKit.h>
@interface GUSearchBar : UITextField
+(instancetype) searchBar;
@end
GUSearchBar.m
#import "GUSearchBar.h"
@implementation GUSearchBar
-(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.contentMode = UIViewContentModeCenter;
self.leftView = leftView;
self.leftViewMode = UITextFieldViewModeAlways;
self.clearButtonMode = UITextFieldViewModeAlways;
self.placeholder = @"搜索";
}
return self;
}
+(instancetype) searchBar
{
return [[self alloc] init];
}
@end
注意:上述有類似leftView.width,leftView.height這樣的語法是使用了自定義UIView的擴展分類,詳情請點擊UIView擴展。
使用
GUSearchBar *searchBar = [[GUSearchBar alloc] init];
searchBar.width = 350;
searchBar.height = 30;
self.navigationItem.titleView = searchBar;
使用效果
GUSearchBar
來自RecluseGu的博客:http://reclusegu.github.io/2016/06/29/Customizing-UISearchBar-with-UITextField/