UISearchbar中自定义 放大镜图标 placeolder字体颜色 文本框背景色 兼容ios7

来源:互联网 发布:端口号 传输层 编辑:程序博客网 时间:2024/06/06 04:18

自定义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];}


0 0