最近碰到一个比较头疼的问题,导航栏上的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属性使得输入框右侧的按钮重新渲染了,所以尽量不要将最上边的两种属性赋值,这个坑埋得有点深,差点坑哭,不说了,继续撸代码去了。