本期需求要讲UISearchBar 的颜色由系统默认的灰色修改成跟app整体统一风格的红色,搜索框上的cancelButton的title设置成白色
原来的搜索框
IMG_2915.PNG
背景颜色修改的方法比较简单
searchBar.backgroundColor = [UIColor redcolor];
但是在修改searchBar的cancelButton 标题上的颜色时,有如下三种方案:
方案1:
大部分都是通过遍历视图的方式,查找cancelButton
//设置searchBar取消按钮
UIView *subVie = [searchbar superview];
for (id vie in [subVie subviews]) {
if ([vie isKindOfClass:[UIButton class]]) {
UIButton *btn = (UIButton *)vie;
[btn setTitle:@"取消" forState:UIControlStateNormal];
}
}
然而在iOS11系统上,此类方法并没有获取cancelButton
方案2:
还有一种常见的方法就是设置searchbar的tintcolor,如下:
searchBar.tintColor = [UIColor whiteColor];
虽然可以改变cancelButton的title颜色,但是搜索框中的光标也会变成白色,无法辨识。
方案3:
然后我就在stack overflow 找到了解决方法:
//设置取消按钮的title颜色为白色
[[UIBarButtonItem appearanceWhenContainedInInstancesOfClasses:@[[UISearchBar class]]] setTintColor:[UIColor whiteColor]];
修改之后的效果:
IMG_0042.PNG
网友评论