关于UISearchBar私有属性的使用

    最近在项目中使用到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等。

本文只是简单的做个记录,有不足之处大家多多补充和指正。

你可能感兴趣的:(关于UISearchBar私有属性的使用)