导航栏上的UISearchBar无法修改"clearButton"属性

最近碰到一个比较头疼的问题,导航栏上的searchbar无论如何都不能改变“clearButton”(也就是输入框右边的x)的image,最终发现问题的所在,当你设置了以下属性:

[self.navigationController.navigationBar setTintColor:[UIColor whiteColor]];
//或者设置了
[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];

然后想通过:

  UITextField *field = [searchBar valueForKey:@"_searchField"];
  UIButton *btn = [field valueForKey:@"_clearButton"];
  [btn setImage:[UIImage imageNamed:@"clear_icon"] forState:UIControlStateNormal];
  [btn setImage:[UIImage imageNamed:@"clear_icon"] forState:UIControlStateHighlighted];

这种方式来改变那个"clearButton"的时候就不会奏效,内部机制暂时不清楚,可能是因为设置navigationBar的tintColor属性使得输入框右侧的按钮重新渲染了,所以尽量不要将最上边的两种属性赋值,这个坑埋得有点深,差点坑哭,不说了,继续撸代码去了。

你可能感兴趣的:(导航栏上的UISearchBar无法修改"clearButton"属性)