自定义searchbar,重写layoutSubviews就行了,只是ios7以下与IOS7获取UITextField的方法不同,下面是我测试通过的代码:
-(void)layoutSubviews
{
UITextField *searchField;
searchField = Nil;
if (!IsiOS7()) {
NSUInteger nums = [self.subviews count];
for(int i = 0; i < nums; i++) {
if([[self.subviews objectAtIndex:i] isKindOfClass:[UITextField class]]) {
searchField = [self.subviews objectAtIndex:i];
[searchField retain];
}
}
}else{
searchField = [self valueForKey:@"_searchField"];
[searchField initWithFrame:CGRectMake(0, 0,IsPad()?768-60:self.frame.size.width, 44)];
searchField.textAlignment = NSTextAlignmentLeft;
}
if(!(searchField == nil)) {
[searchField setBorderStyle:UITextBorderStyleRoundedRect];
//自定义放大镜图片
UIImage *image = [UIImage imageNamed: @"search_ico2"];
UIImageView *iView = [[UIImageView alloc] initWithImage:image];
if (!IsiOS7()) {
iView.frame = CGRectMake(10, 4, 24, 24);
searchField.leftView.hidden = YES;
[searchField addSubview:iView];
}
else
{
iView.frame = CGRectMake(0, 0, 26, 26);
searchField.leftView = iView;
}
//修改文本框背景色
searchField.backgroundColor = VUIColorFromRGB(0xe9d9ca);
searchField.textColor = VUIColorFromRGB(0x000000);
//改变placeholder字体颜色
[searchField setValue:VUIColorFromRGB(0xcbbcab)forKeyPath:@"_placeholderLabel.textColor"];
[iView release];
}
[super layoutSubviews];
}