美文网首页
iOS 11系统 UISearchBar 修改CancelB

iOS 11系统 UISearchBar 修改CancelB

作者: speedsnail | 来源:发表于2018-03-13 10:02 被阅读0次

    本期需求要讲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

    相关文章

      网友评论

          本文标题:iOS 11系统 UISearchBar 修改CancelB

          本文链接:https://www.haomeiwen.com/subject/mzbafftx.html