最近在项目中使用到UISearchBar, 遇到一些坑,发现用UISearchBar私有属性去做一些事情,可以让UISearchBar样式风格达到自己想到的效果。Talk is cheap, 废话不多说,直接上代码。
1. seachBar创建出来默认是有灰色背景的, 可以用KVC获取UISearchBar的私有属性_background, 移除掉灰色背景就会消失
UIView *searchBarBg = [_searchBar valueForKeyPath:@"_background"];
[searchBarBg removeFromSuperview];
2. 获取UISearchBar的文本框的两种方法:
方法一: 还是KVC, 通过_searchField属性直接获取
UITextField *searchTextField = [_searchBar valueForKeyPath:@"_searchField"];
searchTextField.font = kFontSize(15.0);
searchTextField.inputAccessoryView = [MTFKeyboardExtendsionView createView];
方法二: 通过subViews 间接获取, 这个方法有弊端,使用之前必须设置_searchBar的barTintColor才有效
_searchBar.barTintColor = kWhiteColor;
UITextField *searchTextField = [[[_searchBar.subviews firstObject] subviews] lastObject];
获取到textField之后就可以做很多事情了,比如font , inputAccessoryView等。
本文只是简单的做个记录,有不足之处大家多多补充和指正。