美文网首页
UISearchController的cancel怎么改成中文

UISearchController的cancel怎么改成中文

作者: 大橘猪猪侠 | 来源:发表于2020-07-10 13:59 被阅读0次

最近在做一个搜索的功能,觉得自定义有点麻烦,就去研究了一下系统的UISearchController,踩了一些坑,现在分享出来。

常规代码这边就不说了,主要是在UITableView的tableHeaderView放入searchBar。

现在说一下如何更改搜索框的样式和怎么解决cancel按钮的文字怎么改变。

我们直接查看UISearchController的searchBar里面的一些API,你会发现它有一个searchTextField属性,直接上代码:

UITextField *field = self.searchController.searchBar.searchTextField;
field.borderStyle = UITextBorderStyleLine;
field.layer.cornerRadius = 18;
field.layer.masksToBounds = YES;
field.layer.borderWidth = 2;
field.layer.borderColor = [UIColor colorWithRed:0.0/255.0 green:179.0/255.0 blue:234.0/255.0 alpha:1.0].CGColor;

利用上面的代码,就可以修改搜索框的样式。

下面说说如何修改cancel

最直接的办法就是在info.plist文件中的Localization native development region改为china

15943604205256.png

还有一种方法,有一点点小问题,通过遍历searchBar的subviews,最终找到cancel按钮,再修改,但是呢,在打开程序第一次打开搜索框之后,才会修改cancel,除非你之前就设置了self.searchController.searchBar.showsCancelButton = YES;

附上代码:

for (id search in [self.searchController.searchBar subviews]) {
        NSLog(@"%@",search);
        for (id view in [search subviews]) {
            NSLog(@"%@",view);
            if([view isKindOfClass:NSClassFromString(@"_UISearchBarSearchContainerView")]){
                NSLog(@"%@",view);
                for (id views in [view subviews]) {
                    NSLog(@"button:%@",views);
                    if([views isKindOfClass:[UIButton class]]){
                        UIButton *btn = (UIButton *)views;
                        [btn setTitle:@"取消" forState:UIControlStateNormal];
                    }
                }
            }
        }
    }

最后附上一个可以修改cancel按钮的颜色的方法

[[UIBarButtonItem appearanceWhenContainedInInstancesOfClasses:@[[UISearchBar class]]] setTintColor:[UIColor blackColor]];

如果你有更好的方法,可以分享出来,大家一起学习!

相关文章

网友评论

      本文标题:UISearchController的cancel怎么改成中文

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