UISearchBar使用技巧

UISearchBar类结构


UISearchBar使用技巧_第1张图片

apple的UISearchBar的构成基本如上图所示。可以很清楚地看出主要是由两个部分组成,UISearchBarTextField与UISearchBarBackground两个部分组成,而UISearchBar提供的修改的属性和接口挺有限的,因此可以根据上图的结构遍历或者KVC得到子视图来进行一定程度的定制。

把边框线移除与设置背景颜色

UISearchBarBackground是用于设置背景效果的,但它也会带来边框线的效果,若要移动UISearchBar的边框线,就可以removeFromSuperView将UISearchBarBackground移除掉来实现。

在UISearchBarBackground被移除后,这是UISearchBar的background color才能完全显示出来。

输入栏的背景颜色设置

若想通过UISearchBar的属性直接设置输入栏的背景颜色同样是不行,apple只提供了两种默认的风格给你,白和黑,若想自己设置输入栏的颜色,同样的原理,也是需要同过遍历子View或KVC获取到UISearchBarTextField,到这里,其实大家也知道UISearchBar实际上就是其他的一些基础图形控件所拼凑成了,所以你要修改输入栏的背景颜色,那实际上就是修改UISearchBarTextField的background color。

三个附加button

UISearchBar有三个附加的button,分别是CancelButton、SearchResultsButton、BookmarkButton,这三个button其实又分别对应着三个Delegate回调,可以给我们定制点击后的事件。

cancelBtn

其中cancelButton是用于取消当前的搜索所用的,但有一点不好的就是,它会默认显示为cancel,并且不会根据当前系统的语言环境切换,所以得自己处理,同样的,因为UISearchBar并没有提供直接的属性去访问这个cancelButton,所以也得通过遍历或者KVC的方式获取并修改。实现代码如下:

UISearchBar使用技巧_第2张图片

其中需要注意的是,setShowCancelButton这个方法必须在遍历前调用,只有调用了这句话,UISearchBar才会往里面添加一个cancelBtn的控件,所以不预先调用的话,就无法遍历得到cancelBtn。

SearchResultsButton & BookmarkButton

由对象的结构图,可以看出这两个button实际上就是同一个button下的两种风格,并对应着不同的delegate回调时间,所以它们两个只能同时出现一个。

实现效果与对应的初始化代码

UISearchBar使用技巧_第3张图片


UISearchBar使用技巧_第4张图片

你可能感兴趣的:(UISearchBar使用技巧)