自定义SearchBar输入颜色

在SearchBarStyle为UISearchBarStyleProminent的情况下才能改变颜色,UISearchBarStyleMinimal的情况则不可以

一开始的情况为

最外面红色的为一个普通的view的背景色

中间的灰色为SearchBarBackGroup,可以通过设置barTintColor设置它的颜色

最里面的就是我们需要改变的TextField的颜色

在我们把SearchBar的背景色设为和最外面的view背景色一样的时候

发现会有上下两行的横线,那么我们不需要它的情况下怎么办?

[self.SearchBar.subviews.firstObject.subviews.firstObject removeFromSuperview];

这行代码就是删掉SearchBar的背景色,有的时候需要先强制转换成UIView才可以继续

[((UIView *)self.SearchBar.subviews.firstObject).subviews.firstObject removeFromSuperview];

去除完之后我们就可以开始改输入框颜色了,不过要是不在意线的话可以直接跳到下一步

在其他博客中,我发现只要一次寻找子视图就可以,这里我是需要两次才能找到,原因暂时不明

NSLog(@"%@",self.SearchBar.subviews.firstObject.subviews.lastObject);

可以通过判断输出是什么类型的来判断是不是需要的子视图,如果是我们需要的子视图的话,它的类型应该是UISearchBarTextField

而我们要改变颜色的输入框就是这个UISearchBarTextField

        UITextField *field = self.SearchBar.subviews.firstObject.subviews.lastObject;
        field.backgroundColor = [UIColor blackColor];

所以我们只要截取到并且把赋值到field之中就可以,然后就可以想操作其他field的一样操作它。


The End

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值